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");
}
1 comentarios:
Write comentariosjaja... 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