Răspuns :
void sum_div_prim(int n, int &s)
{
int d, i, nr;
if(n == 1) {s = 0; return;}
bool prim = true;
for(i = 2; i * i <= n; i ++)
if(n % i == 0)
{
prim = false;
break;
}
if(prim)
{
s = n;
return;
}
else
{
s = 0;
for(d = 2; d * d < n; d ++)
if(n % d == 0)
{
prim = true;
for(i = 2; i * i <= d; i ++)
if(d % i == 0)
{
prim = false;
break;
}
if(prim) s = s + d;
prim = true;
nr = n / d;
for(i = 2; i * i <= nr; i ++)
if(nr% i == 0)
{
prim = false;
break;
}
if(prim) s = s + nr;
}
if(d * d == n)
{
prim = true;
for(i = 2; i * i <= d; i ++)
if(d % i == 0)
{
prim = false;
break;
}
if(prim) s = s + d;
}
}
return;
}
{
int d, i, nr;
if(n == 1) {s = 0; return;}
bool prim = true;
for(i = 2; i * i <= n; i ++)
if(n % i == 0)
{
prim = false;
break;
}
if(prim)
{
s = n;
return;
}
else
{
s = 0;
for(d = 2; d * d < n; d ++)
if(n % d == 0)
{
prim = true;
for(i = 2; i * i <= d; i ++)
if(d % i == 0)
{
prim = false;
break;
}
if(prim) s = s + d;
prim = true;
nr = n / d;
for(i = 2; i * i <= nr; i ++)
if(nr% i == 0)
{
prim = false;
break;
}
if(prim) s = s + nr;
}
if(d * d == n)
{
prim = true;
for(i = 2; i * i <= d; i ++)
if(d % i == 0)
{
prim = false;
break;
}
if(prim) s = s + d;
}
}
return;
}