Sunteți pe pagina 1din 3

Clasa a 5-a Descompunerea în factori primi

Descompunerea în factori primi


Să se elaboreze un algoritm care citeşte din fisier un număr natural şi îl descompune în factori primi. Exemplu:
daca n = 120 se va afișa 2^3 * 3^1 * 5^1, iar dacă n = 45 se va afișa 3^2 * 5^1

Semnificația datelor folosite:


- n : numărul care trebuie descompus în factori primi
- d : posibilul divizor (factor) al numărului
- p: puterea la acre apare factorul prim în descompunere.

Descrierea algoritmului
- se porneşte de la primul factor prim posibil, 2;
- cât timp numărul dat este diferit de 1, se execută operaţiile:
o se inițializează puterea factorului cu 0.
o cât timp numărul se împarte exact la un factor prim
 se execută împărţirea și se modifică puterea la care apare factorul;
o dacă factorul apare la o putere diferită de 0 atunci
 se afișează factorul și puterea sa.
o se trece la următorul factor prim

Implementarea în C++
............................................// biblioteci, namespace
...................................... //fisier de intrare
...................................... //fisier de iesire
int n, d, p; //declaratii

int main()
{
………………. //citire n
d = 2; // primul factor prim posibil
while(n!=1) // cât timp numărul dat este diferit de 1
{
P = 0; // se inițializează puterea factorului cu 0
while(n%d == 0)// cât timp numărul se împarte exact la un factor prim
{
n = n / d;//efectuam impartirea
p = p + 1; //creste puterea factorului
} //end while(n%d==0)
if(p>0) //daca factorul apare la o putere
{
………..<<d<<”^”<<p<<”*”; //afisam factorul si puterea
} //end if
d = d +1;//trec la urmatorul factor posibil
}//end while(n!=1)
return 0;
}
1
Clasa a 5-a Descompunerea în factori primi

Aplicații
1. Din fișierul divprim.in se citește un număr natural n. Să se afișeze în fișierul divprim.out toți divizorii primi
ai lui n. Fiecare divisor va fi afișat pe un rând.
Exemplu:
divprim.in divprim.out Explicație
100 2 Divizorii primi ai lui 100 sunt 2 și 5
5
Rezolvare: se aplică algoritmul de descompunere în factori primi, iar la afișare se va afișa numai factorul (nu și
puterea sa, ca în exemplul de mai sus).
............................................// biblioteci, namespace

...................................... //fisier de intrare


...................................... //fisier de iesire
............... //declaratii variabile

int main()
{
………………. //citire n
………………….; // primul factor prim posibil
……………………. // cât timp numărul dat este diferit de 1
{
.........; // se inițializează puterea factorului cu 0
........// cât timp numărul se împarte exact la un factor prim
{
………………….;//efectuam impartirea
………………..; //creste puterea factorului
} //end while
if(…………….) //daca factorul apare la o putere
{
……………………….. //afisam factorul si rand nou
} //end if
………………;//trec la urmatorul factor posibil
}//end while
return 0;
}

2. Din fișierul sumprim.in se citește un număr natural n. Să se afișeze în fișierul sumprim.out suma divizorilor
primi ai lui n.
Exemplu:
sumprim.in sumprim.out Explicație
100 7 Divizorii primi ai lui 100 sunt 2 și 5. 2+5=7
120 10 Divizorii primi ai lui 120 sunt 2, 3 și 5. 2+3+5=10
Rezolvare: se aplică algoritmul de descompunere în factori primi. O variabilă va reține suma factorilor primi.
Dacă un factor apare la o putere diferită de 0, acesta se adună la sumă. În final, se afișează suma.
............................................// biblioteci, namespace

2
Clasa a 5-a Descompunerea în factori primi

...................................... //fisier de intrare


...................................... //fisier de iesire
............... //declaratii variabile

int main()
{
………………. //citire n
………………….; // primul factor prim posibil
…………………….. //valoare initiala pentru suma
……………………. // cât timp numărul dat este diferit de 1
{
.........; // se inițializează puterea factorului cu 0
........// cât timp numărul se împarte exact la un factor prim
{
………………….;//efectuam impartirea
………………..; //creste puterea factorului
} //end while
………………………. //daca factorul apare la o putere
{
……………………….. //il adun la suma
} //end if
………………;//trec la urmatorul factor posibil
}//end while
……………………… //se afiseaza suma
return 0;
}

3. Din fișierul puteri.in se citește un număr natural n. Să se afișeze în fișierul puteri.out suma puterilor
divizorilor primi ai lui n.
Exemplu:
puteri.in puteri.out Explicație
100 4 100 = 2^2*5^2. Suma puterilor factorilor primi este 4
120 5 120 = 2^3 * 3^1 * 5^1. Suma puterilor factorilor este 5
Rezolvare: se aplică algoritmul de descompunere în factori primi. O variabilă va reține suma puterilor
factorilor primi. Dacă un factor apare la o putere diferită de 0, această putere se adună la sumă. În final, se
afișează suma.

S-ar putea să vă placă și