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ț.
Exemplu
NrDiv(100) = 9, NextNrDiv(100) = 196, PrevNrDiv(100) = 36
Important
Rezolvarea voastră trebuie să conţină definiţiile celor trei funcţii. Prezenţa în soluţie a altor instrucţiuni sau lipsa definiției vreunei funcții poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
Ma poate ajuta cineva la ultimele 2 subprograme?
Răspunsuri la întrebare
Răspuns de
2
int NextNrDiv(unsigned int n)
{
int divizori=NrDiv(n), div=0, i;
while(divizori!=div)
{
n++; div=0;
for(i=1;i<=n;i++)
if(n%i==0)
div++;
}
return n;
}
int PrevNrDiv(unsigned int n)
{
int divizori=NrDiv(n), div=0, i;
while(divizori!=div)
{
n--; div=0;
if(!n) return -1;
for(i=1;i<=n;i++)
if(n%i==0)
div++;
}
return n;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Chimie,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă