Calcularea CMMDC si a CMMMC
cel mai mare divizor comun, cel mai mic multiplu comun, cmmdc, cmmmc
In urmatoarea perioada voi propune si voi rezolva probleme simple pentru un incepator in algoritmica si C/C++ pentru a incerca sa aducem si sa trezim interesele si celor mai slabuti dintre noi.
In general pentru calcularea celui mai mare divizor comun se foloseste algoritmul algoritmul lui Euclid prin scaderi repetate sau prin impartiri repetate.De preferat pentru timpul de executie este calcularea celui mai mare divizor comun prin impartiri repetate.
Calcularea celui mai mare divizor comun (CMMDC) prin scaderi repetate
#include <stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
}
printf("cmmdc= %d",a);
return 0;
}
Calcularea celui mai mare divizor comun (CMMDC) prin impartiri repetate
#include <stdio.h>
int main()
{
int a,b,r;
scanf("%d %d",&a,&b);
r = a % b;
while(r != 0)
{
a = b;
b = r;
r = a % b;
}
printf("cmmdc= %d",b);
return 0;
}
O varianta recursiva pentru cel de-al doilea algoritm si mult mai simplu de memeorat:
int cmmdc(int a, int b)
{
if((!a) || (!b)) return a+b;
if(a>b) return cmmdc(a%b,b);
return cmmdc(a,b%a);
}
Calcularea celui mai mic multiplu comun(CMMMC)
Ne putem folosi de formula CMMMC = a*b/CMMDC.
#include <stdio.h>
int main()
{
int a,b,r,c,x,y;
scanf("%d %d",&a,&b);
x=a;
y=b;
while(b!=0)
{
r=a % b;
a=b;
b=r;
}
printf("cmmdc= %d\n",a);
c=x*y/a;
printf("cmmmc= %d",c);
return 0;
}
Recomandam, pe aceeasi tema
Nu exista posturi asemanatoare.





Nou pe 


Comentarii la "Calcularea CMMDC si a CMMMC"
Nu am ce spune decat… EXCELENT. Ca o prima metoda ai folosit algoritmul euclidean, asta doar daca am efectua operatiile de scadere in binar ar mai putea fi imbunatatita viteza.
…parerea mea
Nu putem fi siguri de asta.Pe noile compilatoare transformarea din codul limbajului de programare in cod nativ se face mult mai eficient.Pe borland spre exemplu la numere foarte foarte mari s-ar vedea diferente insa pe Mingw/Dev-C++ putin probabil.
Eu am inceput cu scaderile repetate, apoi cu cel mai mic multiplu. Am ajuns la algoritumul lui Euclid mai tarziu. Paradoxal things !