Trebuie să definiți trei funcții având următoarele antete:
int NrDiv(int n)
int NextNrDiv(int n)
int PrevNrDiv(int n)
Funcția NrDiv primește ca parametru un număr natural n și returnează numărul divizorilor lui n
Funcția NextNrDiv primește ca parametru un număr natural n și returnează cel mai mic număr natural, strict mai mare decât n, care are același număr de divizori ca și n.
Funcția PrevNrDiv primește ca parametru un număr natural n și returnează cel mai mare număr natural, strict mai mic decât n, care are același număr de divizori ca și n. Dacă acest număr nu există, funcția va returna valoarea -1.
Restricții și precizări
10 ≤ n ≤ 50.000
Puteți să apelați o funcție din altă funcție. Se recomandă ca funcțiile să fie definite în ordinea descrisă mai sus în enunț.
Răspunsuri la întrebare
Răspuns de
4
int NrDiv(int n)
{
int d=0, j;
for (j=1; j*j<n; ++j)
if (n%j==0) d+=2;
if (j*j==n) ++d;
return d;
}
int NextNrDiv(int n)
{
int m=n+1;
while (NrDiv(n)!=NrDiv(m)) ++m;
return m;
}
int PrevNrDiv(int n)
{
int m=n-1;
while (NrDiv(n)!=NrDiv(m) && m>=0) { --m; }
return m;
}
Alte întrebări interesante
Geografie,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Engleza,
9 ani în urmă
Biologie,
9 ani în urmă
Istorie,
9 ani în urmă
Limba română,
9 ani în urmă