408
Un număr natural nenul se numește perfect dacă este egal cu suma divizorilor săi naturali strict mai mici decât el.
Exemplu
Pentru a=5 și b=30, se afișează pe ecran: 28 6.
Important
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
int sumdiv(int n){
if(n == 1)
return 0;
int sum = 1;
for(int d = 2; d * d <= n; ++d){
if(n % d == 0)
sum += d + (n / d);
if(d * d == n)
sum -= d;
}
return sum;
}
void perfect(int a, int b){
bool gasit = false;
if(a > b)
swap(a, b);
for(int i = b; i >= a; --i)
if(i == sumdiv(i))
cout << i << ' ', gasit = true;
if(!gasit)
cout << "nu exista";
}
Comentarii