Siento que sea algo extenso, si alguno me diera alguna idea de como hacerlo más eficiente se aceptan sugerencias.Gracias
# Ejercicio#129 Máximo común divisor
# Lista que contendra los valores divisores == 0
# para luego de esta lista sacar el maximo de todos.
maximo_divisor = []
# Pedir datos al usuario
a = int(input("Digita el primer dato: "))
b = int(input("Digita el segundo dato: "))
if 0 > (a or b):
print("Error al interpretar")
else:
if a < b:
for i in range(1,a+1):
divisor_a = a%i
divisor_b = b%i
# print(divisor_a, divisor_b)
if divisor_a != 0 and divisor_b != 0:
print(f"El numero {i} no es divisor de {a}")
else:
if divisor_a == 0 and divisor_b == 0:
print(f"El número {i} es divisor de {a}")
if divisor_a == 0:
maximo_divisor.append(i)
else:
for i in range(1,b+1):
divisor_a = a%i
divisor_b = b%i
# print(divisor_a, divisor_b)
if divisor_a != 0 and divisor_b != 0:
print(f"El numero {i} no es divisor de {b}")
else:
if divisor_a == 0 and divisor_b == 0:
print(f"El número {i} es divisor de {b}")
if divisor_b == 0:
maximo_divisor.append(i)
print()
print("El maxio común divisor es => {}".format(max(maximo_divisor)))
hey! cuidado con los operadores
if 0 > (a or b):
le estás diciendo "aplica or entre a y b, luego ver si ese resultado es menor que 0"
es decir si le das a=3 y b=10, el verá si 11 es menor que 0
lo que queres es
if 0 > a or 0 > b:
para evitar repetir todo el codigo usa 2 variables extras
menor y mayor
if a==b: print("nope...")
menor = a if a<b else b
mayor = a if a>b else b
el maximo divisor no requiere ser un array, puede ser un entero...
el resto de optimización es matematica...
-revisar si el menor es divisor del mayor, en ese caso termina ahí
-el maximo divisor de un numero jamas será mayor a su mitad
-empezar por el numero mas alto (que es la mitad de el numero menor si es par)
etc...
hola, en python una de las múltiples posibilidades.
#-*- coding: utf -8 -*-
num1 = int(input("Digita el primer dato:"))
num2 = int(input("Digita el segundo dato: "))
a = max(num1, num2)
b = min(num1, num2)
while b!=0:
res = b
b = a%b
a = res
print('El M.C.D. entre {0} y {1} es: {2}'.format(num1, num2, res))
Saludos