fbpx

Problema #800 – Perfect – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa