Ya hace varios días que empezamos a estudiar el algoritmo para hallar el mínimo común múltiplo entre dos números enteros positivos, y además ya hemos visto como es su implementación en algunos lenguajes de programación como C, C# y Java.
Hoy veremos cómo lo haríamos en C++, y al igual que lo hemos venido haciendo con los otros lenguajes de programación, mostraré las dos formas de resolver el mcm, es decir, mediante el Algoritmo de Euclides y a través de la comprobación del resto exacto de los dos números entre cada uno de los dígitos enteros positivos menores o igual al menor de los dos números (la verdad suena un poco enredado, pero cuando se ve el código se puede entender mucho mejor).
Veamos cómo sería mediante el Algoritmo de Euclides:
#include <iostream> #include <algorithm> using namespace std; /* Método para hallar el Máximo Común Divisor */ int mcd(int num1, int num2) { int mcd = 0; int a = std::max(num1, num2); int b = std::min(num1, num2); do { mcd = b; b = a%b; a = mcd; } while(b!=0); return mcd; } /* Método para hallar el Mínimo Común Múltiplo */ int mcm(int num1, int num2) { int mcm = 0; int a = std::max(num1, num2); int b = std::min(num1, num2); mcm = (a/mcd(a,b))*b; return mcm; } /* Método principal */ int main() { int num1, num2; // Pedimos los numeros al usuario cout << "Ingrese el primer numero: \n"; cin >> num1; cout << "Ingrese el segundo numero: \n"; cin >> num2; //Mostramos el resultado en pantalla cout << "El M.C.M. entre "<<num1<<" y "<<num2<<" es: "<<mcm(num1, num2); return 0; }
Ahora veámoslo de la otra forma:
#include <iostream> #include <algorithm> using namespace std; int main() { int num1, num2, mcm, min; // Pedimos los numeros al usuario cout << "Ingrese el primer numero: \n"; cin >> num1; cout << "Ingrese el segundo numero: \n"; cin >> num2; // Seleccionamos el menor entre num1 y num2 min = std::min(num1, num2); // Inicializamos el ciclo for encargado // de realizar las iteraciones for (int i=1; i<=min; i++) { // Comprobamos si el número i correspondiente a la // iteración es un divisor exacto de num1 y num2 // El último que cumpla estas características // será el Maximo Comun Diisor if (num1%i==0 && num2%i==0) { // Asignamos el mcd int mcd = i; // Calculamos el mcm mcm = (num1*num2)/mcd; } } //Mostramos el resultado en pantalla cout << "El M.C.M. entre "<<num1<<" y "<<num2<<" es: "<<mcm; return 0; }
No hay comentarios.:
Publicar un comentario