Sunteți pe pagina 1din 2

Algoritmi fundamentali în C++: aflarea cmmdc a 2 numere naturale a și b

 
1. Algoritmul lui Euclid prin scăderi repetate(se scade cel mic din cel mare până când devin
egale, rezultând cmmdc)
while(a!=b) //cât timp sunt diferite
if(a>b)
a=a-b; //a este mai mare și îl scădem pe b
else
b=b-a; //b este mai mare și îl scădem pe a
//a sau b este cmmdc

Exemplu de execuție pas cu pas:

a=24 și b=18

a=24 și b=18 a=6 și b=18 a=6 și b=12 a=6 și b=6


a>b(A) a>b(F) a>b(F) cmmdc=6
a=24-18=6 b=18-6=12 b=12-6=6

2. Algoritmul lui Euclid prin împărțiri repetate(se împart cele două numere păstrându-se
restul, schimbându-se apoi factorii împărțirii, până când restul devine 0. Ultimul rest nenul
este cmmdc)
do{
r=a%b;
a=b;
b=r;
} while(a%b!=0); //cât timp restul e diferit de 0

//a este cmmdc

Exemplu de execuție pas cu pas:

a=24 și b=18

a=24 și b=18 a=18 și b=6 a=6 și b=0


r=24%18=6 r=18%6=0 cmmdc=6
a=18 a=6
b=6 b=0
a%b!=0(A) a%b!=0(F)
Exemple clasice de aplicații

———————————————-
// CMMDC a 2 nr a si b prin scăderi
#include<iostream>
using namespace stdș
int main()
{
int a,b;
cin>>a>>b;
while(a!=b)
if(a>b)
a=a-b;
else
b=b-a;
cout<<”CMMDC=”<<a;
return 0;
}

———————————————–
 
// CMMDC a 2 nr a si b prin împărțiri
#include<iostream>
using namespace stdș
int main()
{
int a,b;
cin>>a>>b;
do{
r=a%b;
a=b;
b=r;
} while(a%b!=0)
cout<<”CMMDC=”<<a;
}

Aflarea cmmmc dintre a si b.

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