Informatică, întrebare adresată de andrei2816, 8 ani în urmă

Subprogramul putere are un parametru, n, prin care primește un număr natural (n[2,109]). Subprogramul returnează numărul prim care apare la puterea cea mai mică în descompunerea în factori primi a lui n. Dacă sunt mai multe astfel de numere, se returnează cel mai mic dintre acestea. Scrieți definiția completă a subprogramului. ​.

Răspunsuri la întrebare

Răspuns de andrei750238
2

Subprogram  C++ :

unsigned putere(unsigned n) {

unsigned puterea_minima = 4294967295;

unsigned puterea_curenta;

unsigned prim_gasit = 0;

unsigned curent = 2;

while (n != 1) {

 puterea_curenta = 0;

 while (n % curent == 0) {

  n /= curent;

  puterea_curenta++;

 }

 if (puterea_curenta != 0 && puterea_curenta < puterea_minima) {

  puterea_minima = puterea_curenta;

  prim_gasit = curent;

 }

 curent++;

}

return prim_gasit;

}

Nota :

  • Datorita modului in care sunt incercati divizorii se garanteaza ca cele mai mici valori vor fi testate (si gasite) primele, deci nu va fi nevoie de test suplimentar in cazul in care puterea_curenta == puterea_minima
  • Pentru ca mereu impartim n la valoarea curenta in caz de divizibilitate si pentru ca incepem verificarea de la cele mai mici valori se garanteaza ca daca n%curent==0 atunci curent este prim
  • 4294967295 este valoarea maxima stocabila intr-un unsigned int
Alte întrebări interesante