Calcularea CMMDC si a CMMMC

18 Iulie, 2009 la 11:36 4948 afisari

Etichete : , , ,

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. :D

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. :D

#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.

Tutoriale WEB – Concurs pentru programatori

Comentarii la "Calcularea CMMDC si a CMMMC"

  1. Blackmail_Cristi says:

    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

  2. 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.

  3. miculprogramator says:

    Eu am inceput cu scaderile repetate, apoi cu cel mai mic multiplu. Am ajuns la algoritumul lui Euclid mai tarziu. Paradoxal things ! :D

Lasa un comentariu