Por favor, activa JavaScript y desactiva tu adblock para este sitio

El Javatar

Blog dedicado a la Programación en Java, C, PHP, Phyton, HTML, SQL y Mucho Más

jueves, 22 de mayo de 2014

Como Hallar el Mínimo Común Múltiplo en C++

Como Hallar el Mínimo Común Múltiplo en C++
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;
}

Por último nos resta probar el código, aclarando que a pesar de que el primero es más eficiente que el segundo, los dos deben arrojar el mismo resultado. En este caso volveremos a probarlos con los números 12 y 18, lo cual debe darnos como resultado el número 36:

Salida en Pantalla - Como Hallar el Mínimo Común Múltiplo en C++

No hay comentarios.:

Publicar un comentario