Informatică, întrebare adresată de Puiutz, 9 ani în urmă

Să se scrie o funcție C++ care să determine numărul divizorilor impari ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.

void nr_div_imp(int n,int &nrdiv)
{
nrdiv=1;
for(int i=3;i<=n;i+=2)
if(n%i==0)
nrdiv++;
}
AM NEVOIE DE O METODA EFICIENTA DIN PUNCT DE VEDERE AL TIMPULUI DE EXECUTARE. MAI EFICIENTA DECAT CEA DE SUS.

Răspunsuri la întrebare

Răspuns de express
2
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;
}
 

Puiutz: A mers! merci!
express: cu placere!...si alta data!
Alte întrebări interesante