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

sábado, 17 de mayo de 2014

Como Hallar el Mínimo Común Múltiplo en Java

Como Hallar el Mínimo Común Múltiplo en Java
Después de haber concluido las entradas en las que estuvimos viendo cómo implementar el algoritmo de Euclides para hallar el Máximo Común Divisor en los diversos lenguajes de programación, con el artículo de hoy empezamos la implementación del algoritmo para hallar el Mínimo Común Múltiplo en Java.

Hace un par de días vimos en qué consiste este algoritmo (ver aquí el articulo), por lo tanto en esta entrada me limitaré a mostrar solamente el código; además veremos las dos formas, es decir, resolviéndolo a través del algoritmo de Euclides y mediante el recorrido por cada entero positivo del menor de los dos números.

Pero bueno, vamos a ver entonces cómo serían los dos códigos:

A través del Algoritmo de Euclides

import java.util.Scanner;
/**
 *
 * @author Andres
 */

public class MinComMult {

    /**
     * Método para calcular el Máximo Común Divisor
     * @param num1 primer numero ingresado por el usuario
     * @param num2 segundo número ingresado por el usuario
     * @return mcd que es el Máximo Común Divisor entre num1 y num2
     */
    public static int mcd(int num1, int num2) {
        int mcd = 0;
        int a = Math.max(num1, num2);
        int b = Math.min(num1, num2);
        do {
            mcd = b;
            b = a%b;
            a = mcd;
        } while(b!=0);
        return mcd;
    }

    /**
     * Método para calcular el Mínimo Común Múltiplo
     * @param num1 primer número ingresado por el usuario
     * @param num2 segundo número ingresado por el usuario
     * @return mcm que es el Mínimo Común Múltiplo entre num1 y num2
     */
    public static int mcm(int num1, int num2) {
        int mcm = 0;
        int a = Math.max(num1, num2);
        int b = Math.min(num1, num2);
        mcm = (a/mcd(a, b))*b;
        return mcm;
    }

    /**
     * Método principal
     * @param args 
     */
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Ingrese el primer numero");
        int num1 = scan.nextInt();
        System.out.println("Ingrese el segundo numero");
        int num2 = scan.nextInt();
        System.out.println("El M.C.M. entre "+num1+" y "+num2+" es: "+mcm(num1, num2));
    }

}

Ahora veremos cómo lo haríamos de la otra forma:

import java.util.Scanner;
/**
 *
 * @author Andres
 */

public class MinComMult {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // Pedimos los dos números al usuario
        System.out.println("Ingrese el primer numero");
        int num1 = scan.nextInt();
        System.out.println("Ingrese el segundo numero");
        int num2 = scan.nextInt();
        // Seleccionamos el menor entre num1 y num2
        int min = Math.min(num1, num2);
        // Inicializamos la variable mcm que será la que
        // almacenará el resultado final
        int mcm = 0;
        // Inicializamos el ciclo for a través del cual
        // se realizarán las iteraciones
        for (int i=1; i<=min; i++) {
            // Realizamos la condición para saber si el módulo de num1 y
            // num2 entre cada uno de los números enteros positivos menores
            // o igual al menor de los dos, es equivalente a 0, y de serlo
            // procedemos a realizar el proceso
            if (num1%i==0 && num2%i==0) {
                // Se asigna como mcd a cada uno de los números que cumpla
                // con la condición indicada. Sin embargo, el Máximo
                // Común Divisor será solamente el último número que las
                // cumpla antes de finalizar ciclo
                int mcd = i;
                // Se calcula el mínimo común múltiplo
                mcm = (num1*num2)/mcd;
            }
        }
        // Se muestra el resultado en pantalla
        System.out.println("El M.C.M. entre "+num1+" y "+num2+" es: "+mcm);
    }
    
}

Como te darás cuenta y considerando lo que explicamos en la entrada donde se estudió el algoritmo para hallar el mcm entre dos números enteros positivos, un código más corto no necesariamente implica que sea más eficiente, pues a pesar de que el primero contiene más líneas, el proceso se realiza de forma más rápida que el segundo.

Bien, lo último que nos resta entonces es probar el código haciendo la aclaración que con cualquiera de los dos el resultado debe ser el mismo. En este caso haremos la prueba entonces con los números 12 y 18, y por lo tanto el resultado debe ser 36:

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

2 comentarios: