439
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