Saltar al contenido
El bit perdido
Newsletter

Algoritmo de Euclides extendido: mcd e identidad de Bézout paso a paso

Calcula el máximo común divisor de dos enteros con el algoritmo de Euclides, paso a paso: las divisiones sucesivas, la tabla del algoritmo extendido y los coeficientes de la identidad de Bézout, con la comprobación.

Números enteros, también negativos (−5) y grandes (hasta 60 cifras).

Ejemplos:

Ejemplo resuelto paso a paso

mcd(240, 46)

mcd⁡(240,46)=2=(−9)⋅240+47⋅46\operatorname{mcd}(240, 46) = 2 = (-9) \cdot 240 + 47 \cdot 46
  1. 1Divisiones sucesivas

    Dividimos 240240 entre 4646; después, el divisor entre el resto, y así hasta que el resto sea 00. Cada división cambia el par por otro con los mismos divisores comunes, porque mcd⁡(a,b)=mcd⁡(b,r)\operatorname{mcd}(a, b) = \operatorname{mcd}(b, r). Hacen falta 5 divisiones.

    240=5⋅46+1046=4⋅10+610=1⋅6+46=1⋅4+24=2⋅2+0\begin{aligned} 240 &= 5 \cdot 46 + 10 \\ 46 &= 4 \cdot 10 + 6 \\ 10 &= 1 \cdot 6 + 4 \\ 6 &= 1 \cdot 4 + 2 \\ 4 &= 2 \cdot 2 + 0 \end{aligned}
  2. 2El máximo común divisor

    Es el último resto distinto de 00.

    mcd⁡(240,46)=2\operatorname{mcd}(240, 46) = 2
  3. 3Algoritmo de Euclides extendido

    Llevamos una tabla con los restos rir_i y dos columnas más, sis_i y tit_i, que cumplen siempre ri=si⋅240+ti⋅46r_i = s_i \cdot 240 + t_i \cdot 46. Las dos primeras filas son evidentes (240=1⋅240+0⋅46240 = 1 \cdot 240 + 0 \cdot 46 y 46=0⋅240+1⋅4646 = 0 \cdot 240 + 1 \cdot 46). Cada fila nueva sale de las dos anteriores con el mismo cociente qiq_i de la división: ri=ri−2−qi ri−1r_i = r_{i-2} - q_i\, r_{i-1}, y lo mismo con ss y con tt.

    iqirisiti0240101460125101−5346−4214145−26512−94762023−120\begin{array}{c|r|r|r|r} i & q_i & r_i & s_i & t_i \\ \hline 0 & & 240 & 1 & 0 \\ 1 & & 46 & 0 & 1 \\ 2 & 5 & 10 & 1 & -5 \\ 3 & 4 & 6 & -4 & 21 \\ 4 & 1 & 4 & 5 & -26 \\ 5 & 1 & 2 & -9 & 47 \\ 6 & 2 & 0 & 23 & -120 \end{array}
  4. 4Identidad de Bézout

    La fila del último resto no nulo da los coeficientes: el mcd se escribe como combinación de los dos números. Lo comprobamos.

    2=(−9)⋅240+47⋅46=−2160+21622 = (-9) \cdot 240 + 47 \cdot 46 = -2160 + 2162
  5. 5Los coeficientes no son únicos

    Para cualquier entero kk, la pareja de abajo también vale: el cambio en el primer coeficiente añade 23 k⋅240=5520 k23\,k \cdot 240 = 5520\,k y el del segundo añade (−120) k⋅46=−5520 k(-120)\,k \cdot 46 = -5520\,k, así que se anulan. El algoritmo da la pareja de k=0k = 0.

    (−9+23 k, 47−120 k)(-9 + 23\,k,\ 47 - 120\,k)
  6. 6De regalo, el mínimo común múltiplo

    Como mcd⁡(a,b)⋅mcm⁡(a,b)=a⋅b\operatorname{mcd}(a, b) \cdot \operatorname{mcm}(a, b) = a \cdot b:

    mcm⁡(240,46)=240⋅462=5520\operatorname{mcm}(240, 46) = \frac{240 \cdot 46}{2} = 5520

La idea

El máximo común divisor no cambia si al mayor de los dos números le restamos el menor, y por tanto tampoco si lo sustituimos por su resto al dividir:

mcd⁡(a,b)=mcd⁡(b, r)donde a=bq+r, 0≤r<b.\operatorname{mcd}(a,b)=\operatorname{mcd}(b,\,r)\qquad\text{donde } a=bq+r,\ 0\le r<b.

Se repite hasta que el resto sea 00: el último resto distinto de cero es el mcd⁡\operatorname{mcd}. Aparece ya en los Elementos de Euclides.

La tabla extendida

Se escribe una tabla con columnas qi,ri,si,tiq_i, r_i, s_i, t_i, empezando por r0=ar_0=a (s0=1s_0=1, t0=0t_0=0) y r1=br_1=b (s1=0s_1=0, t1=1t_1=1). En cada fila qiq_i es el cociente de ri−2r_{i-2} entre ri−1r_{i-1} y

ri=ri−2−qi ri−1,si=si−2−qi si−1,ti=ti−2−qi ti−1.r_i=r_{i-2}-q_i\,r_{i-1},\qquad s_i=s_{i-2}-q_i\,s_{i-1},\qquad t_i=t_{i-2}-q_i\,t_{i-1}.

Siempre se cumple ri=si a+ti br_i=s_i\,a+t_i\,b. Al llegar a ri=0r_i=0, la fila anterior da el mcd⁡\operatorname{mcd} y los coeficientes de la identidad de Bézout.

Un ejemplo completo

Calculemos mcd⁡(252,105)\operatorname{mcd}(252,105):

qiq_irir_isis_itit_i
2522521100
1051050011
22424211−2-2
222121−2-255
220055−12-12

El último resto no nulo es 2121, así que mcd⁡(252,105)=21\operatorname{mcd}(252,105)=21 y

21=(−2)⋅252+5⋅105.21=(-2)\cdot252+5\cdot105.

Comprobación: −504+525=21-504+525=21.

Errores típicos

  • Parar un paso tarde o pronto: el mcd⁡\operatorname{mcd} es el último resto distinto de cero, no el 00 final.
  • Equivocarse con el signo de sis_i y tit_i al restar qi si−1q_i\,s_{i-1}: conviene comprobar siempre s a+t b=mcd⁡s\,a+t\,b=\operatorname{mcd}.
  • Pensar que ss y tt son únicos: hay infinitas parejas; la tabla da una de ellas.
  • Intercambiar aa y bb sin cambiar ss y tt de sitio.

Dónde se usa

Es la pieza de base de la aritmética modular: de ella salen los inversos modulares (y con ellos la clave privada de RSA), las congruencias lineales y el teorema chino del resto.

Preguntas frecuentes

¿Para qué sirve el algoritmo de Euclides?

Para calcular el máximo común divisor de dos números sin factorizarlos, solo con divisiones. Funciona con números enormes: es el método que usan los programas de criptografía cuando necesitan un mcd.

¿Qué dice la identidad de Bézout?

Que el mcd(a, b) siempre se puede escribir como una combinación entera de a y b: mcd(a, b) = s·a + t·b con s y t enteros. El algoritmo extendido calcula esos s y t al mismo tiempo que el mcd.

¿Son únicos los coeficientes s y t?

No. Si (s, t) sirve, también sirve (s + k·b/d, t − k·a/d) para cualquier entero k, donde d es el mcd. El algoritmo devuelve una pareja concreta, con valores pequeños.

¿Qué pasa si uno de los números es negativo o cero?

El mcd no depende del signo: mcd(−84, 36) = mcd(84, 36) = 12. Y mcd(a, 0) = |a|. Solo mcd(0, 0) no está definido.

¿Cuántos pasos necesita?

Muy pocos: el número de divisiones crece como el número de cifras, no como el valor de los números. Con dos números de 100 cifras bastan, como mucho, unos cientos de pasos.

Otras herramientas

Para leer