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
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
Franceza,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Evaluare Națională: Lb. Română ,
8 ani în urmă
Chimie,
9 ani în urmă