Răspuns:
long long sumadiv(int x)
{
long long sd=1, d;
for (d=2; d*d<x; ++d)
{
if (x%d==0)
{ sd+=d; sd+=x/d; }
}
if (d*d==x) sd+=d;
return sd;
}
Explicație:
Îţi propun o metodă mai efectivă pentru a determina suma divizorilor.
Întradevăr indicele lui for, (adică numărul de repetări) nu poate fi foarte foarte mare.. Poţi experimenta să vezi ...
Enunţul spune că cauţi perechi prietene cu a, deci trebuie să-l citeşti pe a, să+i afli suma divizorilor şi cu un singur for să cauţi numerele b.