Răspuns :
Răspuns:
int kpn(int a, int b, int k)
{
int i,s;
for(;a<=b&&k!=0;a++)
{
s=1+a;
for(i=2;i<=a/2;i++)
{
if(a%i==0)
{
s+=i;
}
}
if(a%2==s%2)
k--;
}
a--;
if(k==0)return a;
else return -1;
}
Explicație:
Algoritmul parcurge toate numerele de la a pana la b.
for(;a<=b&&k!=0;a++)
Pentru fiecare numar calculeaza suma divizorilor.
for(i=2;i<=a/2;i++)
{
if(a%i==0)
{
s+=i;
}
}
Si mai apoi compara a cu suma, sa verifice daca ambele sunt pare/impare. Daca sunt, scade 1 din k.
if(a%2==s%2)
k--;
Cand k ajunge la 0, structura repetitiva se opreste, iar apoi verifica daca k==0 (for(;a<=b&&k!=0;a++) )(am ajuns la al k-lea numar). daca da returneaza a, daca nu -1, ca in enunt.
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!