2520 es el número más pequeño que se puede dividir entre todos los números del 1 al 10 sin dejar resto.
¿Cuál es el número más pequeño divisible por todos los números del 1 al 20?
MCM: Mínimo Común Múltiplo
El MCM de varios números es el menor número que es múltiplo de todos ellos. Es decir, el menor número divisible por todos.
Verificando el ejemplo: MCM(1-10) = 2520
2520 ÷ 1 = 2520 ✓
Todo número es divisible por 1
2520 ÷ 2 = 1260 ✓
2520 es par
2520 ÷ 7 = 360 ✓
El caso menos obvio: 7 × 360 = 2520
2520 ÷ 10 = 252 ✓
Todos del 1 al 10 dividen exactamente
Los números del 1 al 20
Primos en morado: 2, 3, 5, 7, 11, 13, 17, 19
Conceptos clave
La estrategia
Podemos probar números hasta encontrar uno divisible por todos, o calcular el MCM acumulando de dos en dos.
Relación clave: MCM(a, b) = a × b ÷ MCD(a, b). El MCD se calcula con el algoritmo de Euclides.
Variante A: probar múltiplos de 20
El resultado debe ser múltiplo de 20. Probamos 20, 40, 60... hasta encontrar uno divisible por todos.
Variante B: MCD con Euclides
Implementamos MCD manualmente y calculamos MCM acumulando.
Variante C: usando math.gcd
Python tiene math.gcd incorporado. Lo usamos directamente.
¿Cuál elegir?
| Variante | Iteraciones | Ventaja |
|---|---|---|
| A: probar múltiplos | ~11.6 millones | Intuitiva |
| B: MCD manual | ~60 | Enseña Euclides |
| C: math.gcd | ~60 | Más corta |
Conceptos clave
a, b = b, a % b
Algoritmo de Euclides. Reemplaza a por b, y b por el resto. Cuando b es 0, a es el MCD.
a * b // mcd(a, b)
Fórmula del MCM. El producto dividido por el MCD da el MCM.
from math import gcd
Importar función. Traemos gcd del módulo math de Python.
MCM acumulado
MCM(1,2,3) = MCM(MCM(1,2), 3). Podemos ir acumulando de dos en dos.
Conceptos de Python aprendidos
reduce: acumular con función
reduce(f, [a,b,c,d]) calcula f(f(f(a,b),c),d).
Perfecto para acumular MCM.
Desglose
from functools import reduce
reduce aplica una función acumulativamente a una secuencia.
reduce(mcm, range(1, 21))
Equivale a: mcm(mcm(mcm(1,2),3),4)...20)
| Aspecto | for loop | reduce |
|---|---|---|
| Líneas | 4 | 1 |
| Estilo | Imperativo | Funcional |
| Legibilidad | Más clara | Más compacta |
Conceptos aprendidos
MCM como producto de potencias de primos
El MCM de 1 a n es el producto de la mayor potencia de cada primo que no exceda n.
Primos ≤ 20 y sus mayores potencias
¿Por qué 2⁴ = 16?
Porque 16 ≤ 20 pero 32 > 20. Necesitamos 16 para que 16 divida al MCM.
Comparativa de rendimiento
| Método | Operaciones | Complejidad |
|---|---|---|
| Probar múltiplos | ~232 millones | O(MCM × n) |
| MCM iterativo | ~60 | O(n log n) |
| Potencias de primos | ~30 | O(n) |