306
Cerinţa
Să se scrie o funcție C++ care să determine suma divizorilor primi ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.
Restricţii şi precizări
- numele funcției va fi
sum_div_prim
- funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma divizorilor, respectiv valoarea calculată
- numărul pentru care se calculează suma divizorilor primi va fi mai mare decât
1
și mai mic decât2.000.000.000
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.
void sum_div_prim(int n, int &s) { s=0; int d=2; while(n>1) { if(n%d==0) {s=s+d; while(n%d==0)n/=d;} ++ d; if(n>1 && d*d>n)d = n; } }
Comentarii