Sunteți pe pagina 1din 4

Lecţia 4 – Divizori. Număr prim. Prelucrare șiruri de numere.

Clasa a V-a

Divizori
Un număr d este divizor pentru numărul n dacă restul împărțirii lui n la d este zero (în C++ n%d == 0).
Divizorii pot fi:
- improprii: 1 (unu) și numărul însuși
- proprii
Exemplu:
Divizorii improprii pentru 12 sunt 1 și 12
Divizorii proprii pentru 12 sunt 2, 3, 4 și 6

Problemă:
Se citește n, număr natural. Să se determine și afișeze toți divizorii lui n.
Soluție:
Varianta 1
int n, d; ///n - numărul citit, d - divizorul
int main()
{
cin>>n;
for (d = 1; d <= n; d++)
if (n%d==0) cout<<d<<” “;
}
Varianta 2
int n, d; ///n - numărul citit, d - divizorul
int main()
{
cin>>n;
for (d = 1; d <= n/2; d++)
if (n%d==0) cout<<d<<” “;
cout << n;
}
Varianta 3
int n, d; ///n - numărul citit, d - divizorul
int main()
{
cin>>n;
for (d = 1; d*d < n; d++)
if (n%d==0) cout<<d<<” “<<n/d<<” “;
if (d*d == n)
cout << d;
}
Lecţia 4 – Divizori. Număr prim. Prelucrare șiruri de numere.
Clasa a V-a

Probleme propuse:
1. Să se determine și afișeze numărul divizorilor unui număr natural n.
2. Să se determine și afișeze suma și produsul divizorilor unui număr natural n.
3. Să se determine și afișeze media aritmetică a divizorilor pari a unui număr natural n.
4. Se dă un număr natural n. Calculați pătratul celui mai mic divizor propriu al său.

Numere prime
Spunem că n este prim dacă are exact 2 divizori: pe 1 și pe el însuși.

Problemă:
Se citește n, număr natural. Să se verifice dacă n este număr prim. Se va afișa un mesaj
corespunzător.
Soluție:
Varianta 1
int n, d; ///n - numarul citit, d – divizorul, nrdiv – numărul de divizori
int main()
{
cin>>n;
nrdiv = 0;
for (d = 1; d <= n; d++)
if (n%d==0) nrdiv++;
if(nrdiv == 2)
cout<<”Prim”;
else cout<<”Nu este prim”;
}
Varianta 2
int n, d; ///n - numarul citit, d – divizorul, nrdiv – numărul de divizori
int main()
{
cin>>n;
nrdiv=0;
for (d = 1; d*d < n; d++)
if (n%d==0) nrdiv=nrdiv+2;
if (d*d == n)
nrdiv++;
if (nrdiv == 2)
cout<<”Prim”;
else cout<<”Nu este prim”;
}
Lecţia 4 – Divizori. Număr prim. Prelucrare șiruri de numere.
Clasa a V-a

Varianta 3
int n, d; ///n - numarul citit, d – divizorul;
bool prim; ///prim = 1 – numărul este prim, prim = 0 – numărul nu este prim
int main()
{
cin>>n;
prim=1; ///presupunem că n este prim
if (n<2) prim = 0; //numărul nu este prim
if (n!=2 && n%2==0) prim = 0; //numere pare, cu excepția lui 2, nu sunt primee
for (d=3; d*d<=n && prim ==1; d=d+2)
if(n%d==0) prim=0;
if (prim==1) cout<<”Prim”;
else cout<<”Nu este prim”;
}

Descompunerea în factori primi a numărului natural n:


Primul număr prim este 2, care este și singurul număr prim par!!

Teoria fundamentală a aritmeticii spune că orice număr întreg mai mare decât 1 poate fi scris ca produsul
unic a unu sau mai multe numere prime.
Divizorii primi ai unui număr natural n sunt cuprinși între 2 și n. Pentru a determina divizorii primi ai lui n
vom proceda astfel:
• parcurgem succesiv aceste numere (de la 2 la n) și pentru un divizor curent d al lui n:
o determinăm puterea sa în descompunere numărând de câte ori se poate împărți n la d.
Această împărțire se realizează efectiv.
o afișam divizorul curent d și puterea sa;
• procesul se încheie când n devine 1.

Implementare C++:
int n, d, p; ///n - numarul citit, d - divizorul, p - puterea divizorului
int main()
{
cin>>n;
d=2; ///primul divizor prim este 2
while(n>1)
{
p=0; ///puterea divizorului
while(n%d==0)
{n=n/d; p++;}
Lecţia 4 – Divizori. Număr prim. Prelucrare șiruri de numere.
Clasa a V-a

if(p!=0) cout<<d<<" la putere "<<p<<endl;


d++; ///trec la urmatorul divizor
}
}

Prelucrare șiruri de numere

Probleme propuse:
1. Se citesc n numere naturale. Să se determine cel mai mare număr prim din șirul dat.
2. Se citesc n numere naturale. Pentru fiecare număr citit să se afișeze pe linii diferite, separate prin
spațiu numărul citit și numărul său de divizori.
3. Se citesc n numere naturale. Să se determine și afișeze pe linii diferite numerele care au oglinditul
număr prim.
4. Se citesc n numere naturale. Să se determine și afișeze produsul cifrelor prime care apar în scrierea
celor n numere.

TEMĂ
Rezolvați, de pe platforma indicată, următoarele probleme:
http://pbinfo.ro: #376, #387, #3270, #388, #1568, #389, #3663, #61, #408, #3272, #1574, #245,
#3200, #664, #2372, #50, #2021, #1030, #56, #3335
SUCCES!

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