Informatică, întrebare adresată de nataliaachashiro, 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.


Restricţii şi precizări

-numele funcției va fi nr_div_imp
-funcția va avea doi parametri, reprezentând numărul pentru care se calculează numarul divizorilor impari, respectiv valoarea calculată
-numărul pentru care se calculează numărul divizorilor impari va fi mai mare decât 1 și mai mic decât 2.000.000.000

/// #114


Mie imi da 0 pe solutia aceasta, de ce?
void nr_div_imp(int n , int &k)
{
k = 0;
for(int d = 1; d<=n/2; d+=2)
{
if( n % d == 0 )
{
k++;
}

}
}

Răspunsuri la întrebare

Răspuns de express
14
Iti ofer o solutie in C++ la problema ceruta.Analizeaz-o pas cu pas si ai sa vezi unde gresesti. O prima gresala in sursa ta e ca nu calculezi corect numarul divizorilor. 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;
}


nataliaachashiro: Multumesc!
Alte întrebări interesante