Salut! Ti-am facut o functie eficienta in sensul ca atunci cand cauti divizorii, te duci pana la radicalul numarului. Succes!
void nr_div_imp(int nr, int &s)
{
int d, p = 0;
for(d = 1; d * d < nr; d ++)
if(nr % d == 0)
{
if(d % 2 == 1)
p ++;
if(nr / d % 2 == 1)
p ++;
}
if(d * d == nr)
if(d % 2 == 1)
p ++;
s = p;
return;
}