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
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;
}
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!
Alte întrebări interesante