3.45 (Recursividad para el Máximo Común Divisor) El máximo común divisor de los enteros x y y es el entero más grande que divide tanto a x como a y. Escriba una función reursiva mcd que devuelva el máximo común divisor de x y y, la cual está definida recursivamente de la siguiente manera: se y es igual a 0, entonces, mcd(x, y) es x; de otro modo, mcd(y, x%y), donde % es el operador módulo.
_____________________________________________________________________________________
El programa es bastante simple, y la función gcd está definida exactamente como se especifica en el enunciado del problema. El programa en sí mismo es bastante fácil de leer y seguir. Cópielo, ejecútelo y modifíquelo para mejorarlo si quiere.
//////////////////////////////////////////////////////////// // // // Este programa recibe un par de enteros positivos y // // calcula el maximo comun divisor mediante la recursion // //////////////////////////////////////////////////////////// #include <iostream> using namespace std; int gcd (int, int); int main() { /*Abre main*/ unsigned int a, b, max; cout <<"\n\nSe calcula el maximo comun divisor de dos numeros."<<endl; cout <<"Introduzca dos numeros enteros no negativos: "<<endl; cin >> a >> b; if ( a >= b ) max = gcd (a,b); else max = gcd (b,a); cout <<"\nEl maximo comun divisor de los numeros es: " <<max << endl; return 0; } /*Cierra main*/ ////////////////////////////////////////////////////////////////////// // FUNCION GCD ////////////////////////////////////////////////////////////////////// int gcd (int x, int y) { /*Abre gcd*/ if (0 == y) return x; else return gcd (y, x%y); } /*Cierra gcd*/
Una ejecución de éste programa es la siguiente
[hernandez@localhost Programas]$ ./a.out Se calcula el maximo comun divisor de dos numeros. Introduzca dos numeros enteros no negativos: 568 456 El maximo comun divisor de los numeros es: 8
en este código utilizas el algoritmo de Euclides
ResponderEliminar