Exercitiul din poza, în c++, mersi anticipat.

Răspuns:
int suma(int n)
{
int sum = 0;
int i = 2;
while (n != 1)
{
int exp = 0;
while (n % i == 0)
{
exp++;
n /= i;
}
if (exp)
sum += i;
i++;
if (i * i > n)
i = n;
}
return sum;
}
Explicație:
int suma(int n){
int d = 2, sum = 0;
while(n > 1){
int p = 0;
while(n % d == 0)
p++, n /= d;
if(p)
sum += d;
d++;
if(d * d > n)
d = n;
}
return sum;
}
Daca ai nelamuriri, ma poti intreba in comentarii!