Scrieti o functie care sa calculeze si sa returneze suma divizorilor primi ai unui numar natural primit ca parametru. Folositi un algoritm eficient ca timp de executie.
Exemplu: suma divizorilor primi ai lui 30 este 10 (=2+3+5).
int sum_div_prim(int n)
{
int s=0;
int d=2;
while(n>=d*d)
{
if(n%d==0)
{
s=s+d;
while(n%d==0) n=n/d;
}
else if(d==2) d++;
else d=d+2;
}
if(n!=1) s=s+n;
return s;
}
//algoritmul se bazeaza pe descompunerea in factori primi