Algoritmo de Euclides [ MCD Recursivamente]



En Computacion Simbolica llevamos el tema del MAXIMO COMUN DIVISOR y el profesor dio una propiedad  que realmente  la he visto de la forma mas sencilla para codificarlo y entenderlo  El Condigo tan solo consiste en 1 linea :


 

int MCD (int A , int B )
{
 return A%B == 0 ? B : MCD(B,A%B);
}


Ántes que nada sabemos que el MCD de un numero lo desarrollabamos en el colegio de esta manera:

Ejemplo : Dado dos numeros 24 - 18 hallar su MCD :

24 - 18 | 2
12 - 09 | 3
04 - 03 | 0
              
Por Lo Tanto: el MCD estaba dado por la multiplicacion de los divisores comunes de estos nuemero en este caso el MCD  de 24 -18 = 2 x 3 = 6

La Propiedad es la Siguiente : Sean A y B diferente de 0 ambos enteros  R = irem (A,B)  ( irem es equivalente a = A modulo B ) entonces se cumple que : MCD (A,B) = MCD (B,R) donde R = Residuo.

ejemplo : 
              A = 55;
              B = 34 ;


                             55 = 1 . 34 + 21
                             34 = 1 . 21 + 13
                             21 = 1 . 13  +  8
                             13 = 1 .   8  +  5
                               8 = 1 .   5  +  1
                               5 = 3 .   1  +  2
                               3 = 1 .   2  +  1
                               2 = 2 .   1  +  0

Cuando B llega hacer cero se acabara el calculo:


 
#include<iostream>
using namespace std;

int MCD (int A , int B )
{
return A%B == 0 ? B : MCD(B,A%B); }

int main()
{
system("color f0");
int A,B,R;

cout<<"\n\n\t\t\t MAXIMO COMUN DIVISOR ";

cout<<"\n\n\t Ingrese valor A : ";
cin>>A;

cout<<"\n\n\t Ingrese valor B : ";
cin>>B;

R = MCD(A,B);

cout<<"\n\n\t\t\t RESULTADO : "<<R
<<endl<<endl;

system("Pause");

}
Siguiente
« Post Anterior

1 comentarios:

Write comentarios
Anónimo
AUTHOR
16 de julio de 2010, 11:27 delete

jaja... el programa esta xvre y tb la explicacion jajaja...el maximo comun divisor en 4 lineas comparado con el del primer ciclo :S jiji esta xvree xD ...

Reply
avatar