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:
Códigos para hallar el Mínimo Común Múltiplo en Java
A través del Algoritmo de Euclidesimport 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.
Excelente pagina
ResponderBorrarMe sirvio mucho gracias
ResponderBorrar