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:
Código para hallar el Máximo Común Divisor en Java
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); } }
Excelente! Muchas gracias amigo.
ResponderBorrarno entiendo master
ResponderBorrar¿Qué parte no entiendes?
Borrarmuy bueno, me sirvio.
ResponderBorrar