Documente Academic
Documente Profesional
Documente Cultură
NUMERE PRIME
De la matematică putem spune că un număr natural d este divizorul lui x, dacă și numai dacă,
restul împărțirii lui x la d este egal cu zero:
dacă x % d = 0 atunci
scrie d „îl divide pe” x
altfel
scrie d „nu îl divide pe ” x
sfârșit_dacă
Dacă d divide pe x, spunem că d este divizor al lui x, iar x este multiplu al lui d. Dacă vom nota
cu Dn mulțimea divizorilor numărului x, atunci pentru numărul x = 12 putem scrie:
D12={1, 2, 3, 4, 6, 12},
unde 1 și 12 se numesc divizori improprii ai lui x, iar 2, 3, 4, 6 sunt divizorii proprii ai numărului dat.
Deci divizorii lui 75 sunt: {1, 75, 3, 25, 5, 15}. Constatăm astfel că pentru a determina divizorii
lui x este suficient să parcurgem numerele de la 1 la [√𝑥]. Un caz special îl constituie pătratele
perfecte. În cazul lor trebuie evitată analizarea de două ori a lui x si [√𝑥] , care este divizor al lui x.
Pentru x=36 avem divizorii:
1. 1 în pereche cu 36
2. 2 în pereche cu 18
3. 3 în pereche cu 12
4. 4 în pereche cu 9
5. 5 nu este divizor al lui 36
6. 6 în pereche cu 6. Atenție! 6 trebuie luat o singură dată!
7.7*7>36, ne oprim!
Noua variantă a algoritmului care afișează divizorii lui x este:
Algoritm determinare divizori C++
citește x (număr natural) #include <iostream>
using namespace std;
pentru fiecare posibil divizor de la 1 la [√𝑥] execută int main()
dacă d este divizorul lui x atunci {int x;
afișează divizorul d cin>>x;
for(int d=1;d*d<=x; d++)
dacă d<[√𝑥] atunci //evităm afișare dublată a lui x, dacă x este
//pătrat perfect
if(x % d==0)
{cout<<d<<” ”;
afișează perechea divizorului d: x/d if(d*d<x)
sfârșit_dacă cout<<x/d<<” ”;
sfârșit_dacă }
return 0;
sfârșit_pentru }
Atenție! Pentru determinarea și prelucrarea divizorilor proprii ai unui număr este nevoie să
modificăm intervalul de căutare a posibililor divizori din interval închis [1, √𝑥] în intervalul [2, √𝑥],
fără a lua în considerare numărul însuși.
Numere prime : un număr natural este prim dacă nu are nici un divizor propriu.
Programul este:
#include <iostream>
using namespace std;
int main()
{
int x, prim;
cin>>x;
if(x<2)
fout<<'0';
else
{ int d=2;
prim=1;
for(d=2;d*d<=;d++)
if(x % d==0)
prim=0;
cout<<prim;
}
return 0;
}
Relații matematice cu divizori:
● Numărul de numere <=n divizibile cu k este : nr_div_k = n/k
● Numărul de numere din [a, b], divizibile cu k este: nr_div_k = b/k – (a-1)/k
● Numărul de multipli de a și multipli de b din [1,n] = n/cmmmc(a, b)
● Numărul de multipli de a care nu sunt multipli de b din [1,n]este:
n/a-n/cmmmc(a, b)
Aplicații propuse:
Setul 1