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

lunes, 5 de mayo de 2014

Como Hallar el Máximo Común Divisor en Java

Como Hallar el Máximo Común Divisor en Java
En un artículo anterior estudiamos un algoritmo para hallar el Máximo Común Divisor entre dos números (clic aquí para ver el artículo), el famoso "Algoritmo de Euclides". Como comenté en esa entrada, es posible que la primera vez que nos enfrentemos a este algoritmo nos parezca un poco complicado, pero después de practicarlo se vuelve mucho más sencillo.

También comenté que este es un proceso iterativo con unos pasos bien definidos, y por tanto es sencillo aplicarlo, o más bien representarlo a través de un lenguaje de programación, y en este caso vamos a hacerlo usando el lenguaje Java. El código puede verse un poco largo porque cada línea de la iteración está comentada y explicada de forma bien amplia.

Pues bien, el código es el siguiente:

import java.util.Scanner;
/**
 *
 * @author Andres
 */
public class MaxComDiv {
    public static void main(String[] args) {
        // Pedimos al usuario que ingrese los dos número
        Scanner scan = new Scanner(System.in);
        System.out.println("Ingrese el primer número");
        int num1 = scan.nextInt();
        System.out.println("Ingrese el segundo número");
        int num2 = scan.nextInt();
        
        // Seleccionamos el mayor y el manor para asignarlos
        // a las variables "a" y "b" respectivamente
        int a = Math.max(num1, num2);
        int b = Math.min(num1, num2);
        // Declaramos la variable que guardará el resultado
        int res;        
        
        // Creamos el ciclo que realizará las iteraciones
        do {
            // Le asignamos al resultado el valor de b.
            // Si la primera división da exacta, el mcd será
            // el menor de los dos, es decir "b". Por ejemplo
            // si los números son 6 y 3, "b" será igual a 3 y
            // será por consiguiente el mcd al ser 6%3=0.
            // De no ser así, "res" irá guardando el valor del
            // resto entre "a" y "b" de la anterior iteración
            res = b;
            // Le asignamos a la variable "b" el valor del resto
            // de la división entre "a" y "b", de tal forma que
            // "b" siempre se convertirá en el divisor de la
            // proxima iteración
            b = a%b;
            // El dividendo de la proxima iteración, es decir "a"
            // será entonces el resto de la anterior iteración
            a = res;
        } while (b!=0);
        // El proceso se repite hasta que "b" sea diferente
        // de cero. Es decir, como "b" es el resultado de sacar
        // el resto entre "a" y "b", en algún momento este resultado
        // va a ser igual a cero y por tanto ahí terminará el ciclo.
        // Sin embargo, como la variable "res" tiene guardado el
        // valor del resto de la anterior iteración antes de finalizar
        // el ciclo, es decir, antes de que el resto fuera igual a
        // cero, éste valor "res" será el mcd entre "a" y "b"
        
        // Mostramos el resultado en pantalla
        System.out.println("El M.C.D entre "+num1+" y "+num2+" es: " + res);        
    }
}

Pues bueno, sólo nos queda ejecutar éste código para comprobar el resultado. En este caso lo probaré en NetBeans usando los valores 12 y 16, lo cual me tiene que dar como resultado 4:

Salida en Pantalla - Como Hallar el Máximo Común Divisor en Java

1 comentario: