Sunteți pe pagina 1din 4

Să se scrie o funcție C++ care să determine suma divizorilor unui num ăr natural

transmis ca parametru. Functia va returna rezultatul

int sum_div(int n){

int sum = 0;

for(int d = 1; d * d <= n; ++d){

if(n % d == 0){
sum += n / d;
sum += d;
}
if(d * d == n)
sum -= d;
}
return sum;
}

Să se scrie o funcție C++ care verifică dacă un număr natural transmis ca


parametru este aproape prim.

bool prim(int n){


int d = 2, cnt = 1;
while(n > 1){
int p = 0;
while(n % d == 0)
n/=d, p++;
d++;
cnt *= (p + 1);
if(d * d > n)
d = n;
}
return cnt == 2;
}
bool a_prim(int n){
int cnt = 0;
for(int d = 2; d * d <= n; ++d){
if(n % d == 0)
cnt+=2;
if(d * d == n)
cnt--;
}
if(cnt == 2){
int a, b;
for(int d = 2; d * d <= n; ++d)
if(n % d == 0)
a = d, b = n / d;
if(prim(a) && prim(b))
return 1;
}
return 0;
}

Scrieți definiția completă a subprogramului multipli, cu trei


parametri a , b , c (a≤b), numere naturale, ce returnează numărul multiplilor
lui c din intervalul [a;b].

int multipli(int a , int b , int c)


{
while(a%c!=0)
a++;
while(b%c!=0)
b--;
return (b-a)/c + 1;
}
Subprogramul suma are doi parametri, a și b, prin care primește câte un
număr natural din intervalul [1,10 ]. Subprogramul returnează suma divizorilor
4

naturali comuni lui a și b.

Scrieți definiția completă a subprogramului.

int suma(int a, int b) {

int s = 0;

int i;

for(i = 1; i <= a; i++) {

if(a % i == 0 && b % i == 0) {

s = s + i;

return s;

Scrieți definiția completă a unui subprogram C++ nr_prim care primește prin
singurul său parametru, n, un număr natural cu cel mult 9 cifre și returnează
cel mai mic număr prim, strict mai mare decât n.
int nr_prim(int n)
{
n++;
while(1)
{
int cnt=0;
for(int i = 1 ; i*i<= n ; ++i)
{
if(cnt>2)
break;
if(n%i==0)
cnt+=2;
if(i*i==n)
cnt--;
}
if(cnt==2)
{
return n;
break;
}
else
n++;
}

Subprogramul minDivPrim are un singur parametru, n, prin care primeşte un


număr
natural. Subprogramul returnează cel mai mic număr natural care are aceia și
divizori primi ca n.

Scrieţi definiţia completă a subprogramului.

int minDivPrim(int n)
{
int x=1,d=2;
while(n>1)
{
if(n%d==0)
{
while(n%d==0)n/=d;
x=x*d;
}
++ d;
if(n>1 && d*d>n)d = n;
}
return x;
}

int sum_div(int n){


int sum = 0;
Să se scrie o funcție C++ care să returneze pentru un număr
natural n transmis ca parametru valoarea lui n!, adică 1•2•...•n.

int fact(int n){


if(n == 1 || n == 0)
return 1;
else{
int nr = 1;
for(int i = 2; i <= n; ++i)
nr *= i;
return nr;
}
}
Să se scrie o funcție C++ care să returneze suma cifrelor unui num ăr natural
transmis ca parametru.

int sumcif(int n){


int sum = 0;
while(n){
sum += n % 10;
n /= 10;
}
return sum;
}

S-ar putea să vă placă și