Problema #3612 pbinfo
Un număr natural nenul se numește p-număr dacă are aceeași paritate cu suma divizorilor săi pozitivi. Exemplu: 10 și 25 sunt p-numere (10 are aceeași paritate cu 18=1+2+5+10, iar 25 are aceeași paritate cu 31=1+5+25).
Cerința
Subprogramul kpn, are trei parametri, a, b și k, în această ordine, prin care primește câte un număr natural din intervalul [1,105] (a≤b). Subprogramul returnează cel de al k-lea p-număr din intervalul [a,b] sau -1, dacă nu există cel puțin k astfel de numere în acest interval.
Scrieți definiția completă a subprogramului.
Exemplu
Dacă a=27, b=50 și k=3, atunci subprogramul returnează 34.
Răspunsuri la întrebare
Răspuns de
6
int divizori(int n)
{
int suma=0,i;
for(i=1;i*i<=n;i++)
{
if(n%i==0)
{
suma+=i;
if(i*i<n)
suma+=n/i;
}
}
return suma;
}
int pnumar(int p)
{
if(divizori(p)%2==p%2) return 1;
return 0;
}
int kpn(int a, int b, int k)
{
for(int i=a;i<=b;i++)
if(k)
{
if(pnumar(i))k--;
if(k==0) return i;
}
return -1;
}
iarina1025:
te pup la corazon
Alte întrebări interesante
Biologie,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă