Sunteți pe pagina 1din 4

ALGORITMI ELEMENTARI

Date nestructurate

Nr
.
Algoritmul Implementare C++
crt
.
CMMDC - while(m != 0)
Euclid
(împărțiri) {
int r = n % m;
n = m;
m = r;
}
cout << n;
1.
CMMDC - while(n != m)
scăderi
repetate if(n > m)
n -= m;
else
m -= n;
cout << n;

Divizorii for(int d =2 ; d <= n/2 ; d ++ )


proprii
naturali ai if(n % d == 0)
unui număr cout << d << " ";

Algoritmul eficient:
for(int d =2 ; d * d <= n ; d ++ )
2. if(n % d == 0)
{
cout << d << " ";
if(d * d < n) // dacă nu e pătrat perfect
cout << n / d << " ";
}
Numere prime int ok = 1; // presupunem ca n este prim
if(n < 2)
ok = 0; // 0 si 1 nu sunt prime
for(int d =2 ; d * d <= n ; d ++)
if(n % d == 0)
ok = 0;
if(ok)
cout << n << " este prim";
else
cout << n << " nu este prim";

Algoritmul eficient:
bool prim;
if(n < 2)
prim = false; // 0 si 1 nu sunt prime
else
if(n == 2)
3.
prim = false; // 2 e prim
else
if(n % 2 == 0)
prim = false; // numerele pare, > 2,
neprime
else
{
prim = true; // presupunem ca n este prim
for(int d =3 ; d * d <= n ; d +=2)
if(n % d == 0)
prim = false;
}
if(prim)
cout << n << " este prim";
else
cout << n << " nu este prim";

4. Descompuner int d = 2, p;
ea în factori
primi // d va fi, pe rand, fiecare factor prim din descompunere
// p va fi puterea lui d in descompunere
// il impartim 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 << '\n';
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
}

Cifrele unui while(n != 0) // cat timp n este nenul - mai are cifre
număr
{
int uc = n % 10; //determinam ultima cifra a lui n

5. cout << uc << " "; // prelucram ultima cifra


n /= 10; // eliminam ultima cifra (trunchiem
numarul)
}

Oglinditul unui număr dat


int ogl= 0;
while(n){
ogl =10*ogl + n%10;
n /= 10;
}
cout << ogl;

Maximul cin >> n >> x;


dintr-un șir de
n numere min = x; // inițializare cu prima valoare
for(int i =2 ; i < = n ; i ++)
{

6. cin >> x;
if(x < min)
min = x;
}

Șirul lui Numerele Fibonacci sunt numere naturale care fac parte din
Fibonacci următorul șir, în care fiecare număr începând cu al treilea este
egal cu suma celor două de dinainte:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

a = 1;
b = 1;
cout << a << " " << b;
7. for(int i =3 ; i < = n ; i ++)
{
c = a + b;
cout << c << " ";
a = b;
b = c;
}

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