Documente Academic
Documente Profesional
Documente Cultură
Program C++:
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
int d = 2, // d va fi, pe rand, fiecare factor prim din descompunere
p; // p va fi puterea lui d in descompunere
// il im partim pe n la d in mod repetat, pana cand devine 1
while(n > 1)
{
// numaram de cate ori se imparte n la d. Aceasta va fi puterea lui d in
descompunere
p = 0;
while(n % d == 0)
{
++p;
n /= d;
}
// daca s-a facut cel putin o impartire, afisam factorul si puterea
if(p)
cout << d << " " << p << endl;
1|Page
Descompunere in factori primi:
++ d;
// daca d * d il depaseste pe n si n nu este 1, decidem ca n este prim,
// si este factor in descompunerea valorii initiale a lui n
if(n>1 && d * d > n){
d = n; // trecem direct la n, urmatorul factor din descompunere
}
}
return 0;
}
Orice număr natural nn mai mare decât 11 se poate scrie în mod unic sub
forma n=pe11⋅pe22⋅…⋅pekkn=p1e1⋅p2e2⋅…⋅pkek, unde p1<p2<…<pkp1<p2<…<pk sunt
numere prime, iar ei>0,i=1..kei>0,i=1..k
V-ați întrebat de ce numărul 11 nu este prim? Dacă ar fi, teorema de mai sus ar fi falsă!
Pentru numărul 1212, ar fi valabile descompunerile:
12=22⋅312=22⋅3
12=1⋅22⋅312=1⋅22⋅3
12=17⋅22⋅312=17⋅22⋅3
ș.a.m.d.
Iată trei aplicații interesante ale descompunerii în factori primi. Lăsăm demonstrarea lor în
sarcina cititorului!
1. Numărul de divizori
Numărul de divizori ai lui nn poate fi determinat prin numărarea acestora: parcurgerea
intervalului de divizori posibili și numărarea valorilor care sunt divizori ai lui nn.
2|Page
Descompunere in factori primi:
2.Suma divizorilor
Proprietate: Pentru un număr natural care are descompunerea în factori
primi: n=pe11⋅pe22⋅…⋅pekkn=p1e1⋅p2e2⋅…⋅pkek, suma divizorilor este: pe1+11−1p1–
1⋅pe2+12−1p2–1⋅…⋅pek+1k−1pk–1p1e1+1−1p1–1⋅p2e2+1−1p2–1⋅…⋅pkek+1−1pk–1.
3|Page
Descompunere in factori primi:
4|Page