fbpx

Problema #20 – Suma divizorilor primi – Rezolvari PBInfo

de Mihai-Alexandru

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ât 2.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

S-ar putea sa iti placa