Recurrencias y aritmética · Definición
Algoritmo de Euclides
Antes de empezar necesitas conocer
Evita factorizar: da el máximo común divisor con unas pocas divisiones, incluso para números enormes.
Definición
El algoritmo de Euclides calcula el máximo común divisor de dos enteros \(a\) y \(b\) dividiendo una y otra vez, y reemplazando cada par por el divisor y el residuo, hasta que el residuo sea 0.
Factorizar un número grande es difícil, pero dividir es fácil. El algoritmo de Euclides aprovecha que \(\gcd(a,b)=\gcd(b,r)\) cuando \(a=qb+r\): los divisores comunes de \(a\) y \(b\) son exactamente los de \(b\) y \(r\). Se repite hasta que el residuo es 0, y el último residuo no nulo es el resultado. Para \(a=252\) y \(b=105\): \(252=2\cdot105+42\), \(105=2\cdot42+21\), \(42=2\cdot21+0\), de modo que \(\gcd(252,105)=21\).
Termina siempre porque los residuos son enteros no negativos que decrecen estrictamente. Es además muy rápido: cada dos pasos el residuo se reduce al menos a la mitad, por lo que el número de divisiones es proporcional a la cantidad de cifras. El peor caso son dos números de Fibonacci consecutivos: \(\gcd(89,55)\) necesita 9 divisiones, todas con cociente 1. Si \(a<b\), el primer paso solo intercambia los números.
Retrocediendo por las divisiones se obtiene la versión extendida: números enteros \(x,y\) con \(ax+by=\gcd(a,b)\), la identidad de Bézout. Con ella se resuelven ecuaciones diophantinas \(ax+by=c\) y se calculan inversos módulo \(m\), que son la base de la criptografía RSA. Un error frecuente es detenerse en el residuo 0 en lugar de tomar el residuo anterior: el resultado es el último residuo no nulo, es decir, el último divisor.
Para pensar
Calcula \(\gcd(48,18)\) con el algoritmo y anota los residuos.
\(48=2\cdot18+12\), \(18=1\cdot12+6\), \(12=2\cdot6+0\). El máximo común divisor es 6.
¿Por qué restar \(qb\) a \(a\) no cambia los divisores comunes?
Si \(d\mid a\) y \(d\mid b\), entonces \(d\mid a-qb\); e inversamente, si \(d\mid b\) y \(d\mid a-qb\), entonces \(d\mid (a-qb)+qb=a\).
Ejercicios 10
- Calcula \(\gcd(252,105)\) con el algoritmo de Euclides.
- ¿Cuál es el residuo de dividir 100 entre 36?
- Al aplicar el primer paso de Euclides al par \((84,30)\), ¿qué par se obtiene?
- Calcula \(\gcd(1071,462)\).
- ¿Cuántas divisiones (la última con residuo 0) requiere el algoritmo de Euclides para \(\gcd(1071,462)\)?
- Calcula \(\gcd(391,221)\).
- Reduce la fracción \(\dfrac{143}{221}\) a su forma irreducible.
- Para cualquier entero positivo \(n\), ¿cuánto vale \(\gcd(n,n+1)\)?
- ¿Por qué el algoritmo de Euclides siempre termina?
- ¿Qué par produce el primer paso de Euclides \((a,b)\to(b,\,a\bmod b)\) aplicado a \((35,91)\)?
Después de esto
Referencias
- Kenneth H. Rosen, Discrete Mathematics and Its Applications, 8th edition, McGraw-Hill, 2019. §4.3
- Susanna S. Epp, Discrete Mathematics with Applications, 5th edition, Cengage, 2019. §4.8
- Ralph P. Grimaldi, Discrete and Combinatorial Mathematics: An Applied Introduction, 5th edition, Pearson, 2003. §4.4