Máximo común divisor en Python

Python – Máximo común divisor

Hoy vamos a ver cómo obtener el máximo común divisor de dos números usando el lenguaje de programación Python.

Usaremos Python para escribir dos funciones que nos van a ayudar a calcular el MCD de dos números, una recursiva y otra usando el ciclo while.

Recuerda que el máximo común divisor de dos números es el entero máximo que puede dividir a dos números sin dejar residuo.

Por ejemplo, el máximo común divisor de 6 y 20 es 2, ya que no hay número mayor que pueda dividir a ambos números (ya que el 3 puede dividir al 6 pero no al 20).

Veamos cómo resolver este ejercicio de programación con Python a través del algoritmo de Euclides.

Máximo común divisor con ciclo while

Veamos el primer enfoque, y es calcular el mcd de dos enteros usando el ciclo while. Dentro del ciclo simplemente vamos intercambiando variables y asignando a b el resultado de obtener el residuo de dividir a entre b.

El ciclo termina cuando b sea cero. En código queda así:

def maximo_comun_divisor(a, b):
    temporal = 0
    while b != 0:
        temporal = b
        b = a % b
        a = temporal
    return a

Fíjate en que estamos usando una variable temporal para ir guardando ahí el valor de b, ya que luego vamos a intercambiarlo con a.

Usando recursión

Si queremos ver el enfoque recursivo para el MCD usando Python podemos lograrlo igualmente con funciones. El código queda incluso más simplificado, pero la condición sigue siendo la misma: se va a detener cuando b sea 0.

def maximo_comun_divisor_recursivo(a, b):
    if b == 0:
        return a
    return maximo_comun_divisor_recursivo(b, a % b)

La recursividad ocurre en la línea 4, pues invocamos a la función dentro de sí misma pero ahora pasamos a b como a (intercambiando la variable) y pasamos a b como el residuo de dividir a entre b.

Poniendo todo junto

Máximo común divisor en Python
Máximo común divisor en Python

Hasta ahora te he mostrado estos métodos en Python. Puedes usar el que más te convenga. Para usarlos y probarlos podemos ver el siguiente código completo:

"""
    https://parzibyte.me/blog
"""


def maximo_comun_divisor(a, b):
    temporal = 0
    while b != 0:
        temporal = b
        b = a % b
        a = temporal
    return a


def maximo_comun_divisor_recursivo(a, b):
    if b == 0:
        return a
    return maximo_comun_divisor_recursivo(b, a % b)


a = 20
b = 6
resultado = maximo_comun_divisor(a, b)
resultado_recursivo = maximo_comun_divisor_recursivo(a, b)
print(
    f"El Máximo común divisor de {a} y {b} es {resultado}. De manera recursiva, es {resultado_recursivo}")

El modo de uso de las funciones se encuentra en las líneas 21 hasta 26. Obviamente estos valores pueden venir de cualquier lugar, yo los he colocado en el código por simplicidad.

Te dejo con un enlace para explorar más sobre Python en mi blog.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *