
En matemáticas , el algoritmo euclidiano [ nota 1 ] , o algoritmo de Euclides , es un método eficiente para calcular el máximo común divisor (MCD) de dos números enteros , el mayor número que los divide a ambos sin dejar resto . Recibe su nombre del antiguo matemático griego Euclides , quien lo describió por primera vez en sus Elementos ( c. 300 a. C. ). Es un ejemplo de algoritmo y uno de los más antiguos de uso común. Se puede utilizar para simplificar fracciones y forma parte de muchos otros cálculos de teoría de números y criptografía.
El algoritmo euclidiano se basa en el principio de que el máximo común divisor de dos números no cambia si se reemplaza el número mayor por su diferencia con el menor. Por ejemplo, 21 es el MCD de 252 y 105 (ya que 252 = 21 × 12 y 105 = 21 × 5) , y el mismo número 21 también es el MCD de 105 y 252 − 105 = 147. Dado que este reemplazo reduce el mayor de los dos números, al repetir este proceso se obtienen pares de números sucesivamente menores hasta que los dos números se igualan. Cuando esto ocurre, ese número es el MCD de los dos números originales. Invirtiendo los pasos o utilizando el algoritmo euclidiano extendido , el MCD se puede expresar como una combinación lineal de los dos números originales, es decir, la suma de ambos, cada uno multiplicado por un número entero (por ejemplo, 21 = 5 × 10⁵ + (−2) × 25² ). El hecho de que el MCD siempre se pueda expresar de esta manera se conoce como la identidad de Bézout .
La versión del algoritmo euclidiano descrita anteriormente —que sigue la presentación original de Euclides— puede requerir muchos pasos de resta para encontrar el MCD cuando uno de los números dados es mucho mayor que el otro. Una versión más eficiente del algoritmo simplifica estos pasos, reemplazando el mayor de los dos números por su resto al dividirlo por el menor (con esta versión, el algoritmo se detiene al obtener un resto de cero). Con esta mejora, el algoritmo nunca requiere más pasos que cinco veces el número de dígitos (base 10) del entero menor. Esto fue demostrado por Gabriel Lamé en 1844 ( Teorema de Lamé ) [ 1 ] [ 2 ] y marca el comienzo de la teoría de la complejidad computacional . En el siglo XX se desarrollaron métodos adicionales para mejorar la eficiencia del algoritmo.
El algoritmo euclidiano tiene numerosas aplicaciones teóricas y prácticas. Se utiliza para simplificar fracciones y para realizar divisiones en aritmética modular . Los cálculos que emplean este algoritmo forman parte de los protocolos criptográficos utilizados para proteger las comunicaciones por internet , así como de los métodos para descifrar estos criptosistemas mediante la factorización de grandes números compuestos . El algoritmo euclidiano puede utilizarse para resolver ecuaciones diofánticas , como encontrar números que satisfacen múltiples congruencias según el teorema chino del resto , construir fracciones continuas y hallar aproximaciones racionales precisas a números reales. Finalmente, puede emplearse como herramienta básica para demostrar teoremas de teoría de números, como el teorema de los cuatro cuadrados de Lagrange y la unicidad de las factorizaciones primas .
El algoritmo original se describió únicamente para números naturales y longitudes geométricas (números reales), pero en el siglo XIX se generalizó a otros tipos de números, como los enteros gaussianos y los polinomios de una variable. Esto dio lugar a nociones algebraicas abstractas modernas , como los dominios euclidianos .
Antecedentes: máximo común divisor
El algoritmo euclidiano calcula el máximo común divisor (MCD) de dos números naturales a y b . El máximo común divisor g es el mayor número natural que divide a a y b sin dejar resto. Los sinónimos de MCD incluyen máximo común factor (MCF), máximo común divisor (MCD) y máxima medida común (MCM). El máximo común divisor se suele escribir como mcd( a , b ) o, más simplemente, como ( a , b ) [ 3 ] , aunque esta última notación es ambigua y también se utiliza para conceptos como ideal en el anillo de los enteros , que está estrechamente relacionado con el MCD.
Si mcd( a , b ) = 1 , entonces se dice que a y b son coprimos (o relativamente primos). [ 4 ] Esta propiedad no implica que a o b sean ellos mismos números primos . [ 5 ] Por ejemplo, 6 y 35 se factorizan como 6 = 2 × 3 y 35 = 5 × 7 , por lo que no son primos, pero sus factores primos son diferentes, por lo que 6 y 35 son coprimos, sin factores comunes aparte de 1 .

Sea g = mcd( a , b ) . Como a y b son múltiplos de g , se pueden escribir a = mg y b = ng , y no existe ningún número mayor G > g para el cual esto sea cierto. Los números naturales m y n deben ser coprimos, ya que cualquier factor común podría factorizarse de m y n para hacer que g sea mayor. Por lo tanto, cualquier otro número c que divida tanto a como b también debe dividir a g . El máximo común divisor g de a y b es el único divisor común (positivo) de a y b que es divisible por cualquier otro divisor común c . [ 6 ]
El máximo común divisor se puede visualizar de la siguiente manera. [ 7 ] Consideremos un área rectangular a por b , y cualquier divisor común c que divida exactamente a y b . Los lados del rectángulo se pueden dividir en segmentos de longitud c , lo que divide el rectángulo en una cuadrícula de cuadrados de lado c . El MCD g es el mayor valor de c para el cual esto es posible. A modo de ejemplo, un área rectangular de 24×60 se puede dividir en una cuadrícula de: cuadrados de 1×1 , cuadrados de 2×2 , cuadrados de 3×3 , cuadrados de 4×4 , cuadrados de 6×6 o cuadrados de 12×12 . Por lo tanto, 12 es el MCD de 24 y 60. Un área rectangular de 24×60 se puede dividir en una cuadrícula de cuadrados de 12×12 , con dos cuadrados a lo largo de un borde ( 24/12 = 2 ) y cinco cuadrados a lo largo del otro ( 60/12 = 5 ).
El máximo común divisor de dos números a y b es el producto de los factores primos que comparten, donde cada factor primo puede repetirse tantas veces como divida a ambos números . [ 8 ] Por ejemplo , dado que 1386 se puede factorizar en 2 × 3 × 3 × 7 × 11 y 3213 en 3 × 3 × 3 × 7 × 17 , el MCD de 1386 y 3213 es igual a 63 = 3 × 3 × 7 , el producto de sus factores primos comunes (con el 3 repetido ya que 3 × 3 divide a ambos). Si dos números no tienen factores primos comunes, su MCD es 1 (obtenido aquí como una instancia del producto vacío ); en otras palabras, son coprimos. Una ventaja clave del algoritmo euclidiano es que puede encontrar el MCD de manera eficiente sin tener que calcular los factores primos. [ 9 ] [ 10 ] Se cree que la factorización de enteros grandes es un problema computacionalmente muy difícil, y la seguridad de muchos protocolos criptográficos ampliamente utilizados se basa en su inviabilidad. [ 11 ]
Otra definición del MCD es útil en matemáticas avanzadas, particularmente en teoría de anillos . [ 12 ] El máximo común divisor g de dos números distintos de cero a y b es también su combinación lineal entera positiva más pequeña, es decir, el número positivo más pequeño de la forma ua + vb donde u y v son enteros. El conjunto de todas las combinaciones lineales enteras de a y b es en realidad el mismo que el conjunto de todos los múltiplos de g ( mg , donde m es un entero). En lenguaje matemático moderno, el ideal generado por a y b es el ideal generado por g solo (un ideal generado por un solo elemento se llama ideal principal , y todos los ideales de los enteros son ideales principales). Algunas propiedades del MCD son de hecho más fáciles de ver con esta descripción, por ejemplo, el hecho de que cualquier divisor común de a y b también divide al MCD (divide ambos términos de ua + vb ). La equivalencia de esta definición de MCD con las otras definiciones se describe a continuación.
El MCD de tres o más números es igual al producto de los factores primos comunes a todos los números, [ 13 ] pero también se puede calcular tomando repetidamente los MCD de pares de números. [ 14 ] Por ejemplo,
- mcd( a , b , c ) = mcd( a , mcd( b , c )) = mcd(mcd( a , b ), c ) = mcd(mcd( a , c ), b ).
Por lo tanto, el algoritmo de Euclides, que calcula el máximo común divisor de dos números enteros, es suficiente para calcular el máximo común divisor de un número arbitrario de números enteros.
Descripción
Procedimiento
a = 1071 ; b = 462 a = 119 ; b = 61
-1= q 1 ×+ r 1 q 1 =; r 1 =Dado que r 1 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.
= q 2 ×+ r 2 q 2 =; r 2 =Dado que r 2 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.
= q 3 ×+ r 3 q 3 =; r 3 =Dado que r 3 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.
= q 4 ×+ r 4 q 4 =; r 4 =Dado que r 4 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.
= q 5 ×+ r 5 q 5 =; r 5 =Dado que r 5 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.
= q 6 ×+ r 6 q 6 =; r 6 =Dado que r 6 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.
= q 7 ×+ r 7 q 7 =; r 7 =Dado que r 7 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.
= q 8 ×+ r 8 q 8 =; r 8 =Dado que r 8 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.
= q 9 ×+ r 9 q 9 =; r 9 =Dado que r 9 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.
= q 10 ×+ r 10 q 10 =; r 10 =Dado que r 10 = 0 el algoritmo ha terminado. Por lo tanto, MCD(,) =.El número es demasiado grande para la calculadora.
El algoritmo euclidiano puede entenderse como la construcción de una secuencia de enteros no negativos que comienza con los dos enteros dados.yy finalmente terminará con el número entero cero:conEl enteroserá entonces el MCD y podemos afirmarEl algoritmo indica cómo construir los restos intermedios.mediante división con resto en el par anteriorhallando un cociente enterode modo que:
Porque la secuencia de enteros no negativoses estrictamente decreciente, eventualmente debe terminar . En otras palabras, dado quepor caday cada unoes un número entero que es estrictamente menor que el anteriorEventualmente no puede haber un entero no negativo menor que cero, y por lo tanto el algoritmo debe terminar. De hecho, el algoritmo siempre terminará en el n -ésimo paso conigual a cero. [ 15 ]
Para ilustrarlo, supongamos que se solicita el MCD de 1071 y 462. La secuencia es inicialmentey para encontrarNecesitamos encontrar números enterosyde tal manera que:
Este es el cocientedesdeEsto determinay así la secuencia es ahoraEl siguiente paso es continuar la secuencia para encontraral encontrar números enterosyde tal manera que:
Este es el cocientedesdeEsto determinay así la secuencia es ahoraEl siguiente paso es continuar la secuencia para encontraral encontrar números enterosyde tal manera que:
Este es el cocientedesdeEsto determinay así se completa la secuencia comoya que no existe ningún otro entero no negativo menor quese puede encontrar. El penúltimo restoes, por lo tanto, el MCD solicitado:
Podemos generalizar un poco eliminando cualquier requisito de ordenación en los dos valores iniciales.ySiEl algoritmo puede continuar y encontrar trivialmente queya que la secuencia de restos seráSientonces también podemos continuar ya quesugiriendo que el siguiente resto debería seren sí mismo, y la secuencia esNormalmente, esto sería inválido porque incumple el requisito.pero ahora tenemospor construcción, por lo que el requisito se satisface automáticamente y el algoritmo euclidiano puede continuar como de costumbre. Por lo tanto, eliminar cualquier orden entre los dos primeros enteros no afecta la conclusión de que la secuencia debe terminar eventualmente porque el siguiente resto siempre satisfaráy todo continúa como se indicó anteriormente. Las únicas modificaciones que deben hacerse son quesolo paray que la subsecuencia de enteros no negativosparaes estrictamente decreciente, por lo tanto excluyede ambas declaraciones.
Prueba de validez
La existencia de un pasode tal manera queSe deduce de la condición, paraEsto garantiza que el algoritmo finalice.
El último resto distinto de ceroser igual aSe deduce de las siguientes propiedades de
1., para todos.
- De hecho, los divisores comunes deyson exactamente todos los divisores de, de los cualeses el más grande.
2.
- De hecho, los conjuntos de divisores comunes de los paresyson iguales. En particular, el mayor de sus divisores comunes es el mismo.
- Para ver esto, supongamos quees un divisor común deyEsto significa que hay números enteros.de tal manera queyDe ello se deduce que, dóndees un número entero. Por lo tanto,también es un divisor de.
- Por el contrario, sies un divisor común dey, entonces hay números enterosyde tal manera quey. Desde este, dóndees un número entero. Por lo tanto,es también un divisor común dey.
Ahora, el algoritmo euclidiano comienza con el pary en cada paso, el par de restoses reemplazado porLa propiedad 2 muestra que elde los pares permanece invariable. En particular, eldel primer pary el último parson lo mismo. Aplicando la propiedad 1,.
Ejemplo resuelto

A modo de ejemplo, se puede utilizar el algoritmo euclidiano para hallar el máximo común divisor de a = 1071 y b = 462. Para empezar, se restan múltiplos de 462 a 1071 hasta que el resto sea menor que 462. Se pueden restar dos de estos múltiplos ( q₀ = 2 ) , dejando un resto de 147 :
- 1071 = 2 × 462 + 147 .
Luego se restan múltiplos de 147 de 462 hasta que el resto sea menor que 147. Se pueden restar tres múltiplos ( q 1 = 3 ), dejando un resto de 21 :
- 462 = 3 × 147 + 21 .
Luego se restan múltiplos de 21 de 147 hasta que el resto sea menor que 21. Se pueden restar siete múltiplos ( q² = 7 ), sin dejar resto:
- 147 = 7 × 21 + 0 .
Dado que el último resto es cero, el algoritmo termina con 21 como máximo común divisor de 1071 y 462. Esto coincide con el mcd(1071, 462) hallado mediante la factorización prima anterior . En forma tabular, los pasos son:
Visualización
El algoritmo euclidiano puede visualizarse en términos de la analogía de teselado dada anteriormente para el máximo común divisor. [ 16 ] Supongamos que deseamos cubrir un rectángulo de a × b con teselas cuadradas exactamente, donde a es el mayor de los dos números. Primero intentamos teselar el rectángulo usando teselas cuadradas de b × b ; sin embargo, esto deja un rectángulo residual de r 0 × b sin cubrir, donde r 0 < b . Luego intentamos teselar el rectángulo residual con teselas cuadradas de r 0 × r 0 . Esto deja un segundo rectángulo residual de r 1 × r 0 , que intentamos teselar usando teselas cuadradas de r 1 × r 1 , y así sucesivamente. La secuencia termina cuando no hay ningún rectángulo residual, es decir, cuando las teselas cuadradas cubren el rectángulo residual anterior exactamente. La longitud de los lados de la tesela cuadrada más pequeña es el MCD de las dimensiones del rectángulo original. Por ejemplo, la baldosa cuadrada más pequeña en la figura adyacente es de 21×21 (mostrada en rojo), y 21 es el MCD de 1071 y 462 , las dimensiones del rectángulo original (mostrado en verde).
división euclidiana
En cada paso k , el algoritmo euclidiano calcula un cociente q k y un resto r k a partir de dos números r k −1 y r k −2.
- r k −2 = q k r k −1 + r k ,
donde r k es no negativo y es estrictamente menor que el valor absoluto de r k −1 . El teorema que subyace a la definición de la división euclidiana garantiza que dicho cociente y resto siempre existen y son únicos. [ 17 ]
En la versión original del algoritmo de Euclides, el cociente y el resto se obtienen mediante restas repetidas; es decir, se resta r k −1 de r k −2 repetidamente hasta que el resto r k sea menor que r k −1 . Después, se intercambian r k y r k −1 y se repite el proceso. La división euclidiana reduce todos los pasos entre dos intercambios a un solo paso, lo que resulta más eficiente. Además, no se necesitan los cocientes, por lo que se puede reemplazar la división euclidiana por la operación módulo , que solo proporciona el resto. De este modo, la iteración del algoritmo euclidiano se simplifica.
- r k = r k −2 mod r k −1 .
Implementaciones
Las implementaciones del algoritmo pueden expresarse en pseudocódigo . Por ejemplo, la versión basada en la división puede programarse como [ 18 ].
función mcd(a, b) mientras b ≠ 0 t := b b := a mod b a := t devolver un
Al comienzo de la k -ésima iteración, la variable b contiene el último resto r k −1 , mientras que la variable a contiene su predecesor, r k −2 . El paso b := a mod b es equivalente a la fórmula de recursión anterior r k ≡ r k −2 mod r k −1 . La variable temporal t contiene el valor de r k −1 mientras se calcula el siguiente resto r k . Al final de la iteración del bucle, la variable b contiene el resto r k , mientras que la variable a contiene su predecesor, r k −1 .
(Si se permiten entradas negativas, o si la modfunción puede devolver valores negativos, la última línea debe reemplazarse por return abs(a).)
En la versión basada en la resta, que fue la versión original de Euclides, el cálculo del resto ( ) se reemplaza por una resta repetida. [ 19 ] A diferencia de la versión basada en la división, que funciona con enteros arbitrarios como entrada, la versión basada en la resta supone que la entrada consiste en enteros positivos y se detiene cuando a = b :b := a mod b
función mcd(a, b) mientras a ≠ b si a > b a := a − b demás b := b − a devolver un
Las variables a y b se alternan para contener los restos anteriores r k −1 y r k −2 . Supongamos que a es mayor que b al comienzo de una iteración; entonces a es igual a r k −2 , ya que r k −2 > r k −1 . Durante la iteración del bucle, a se reduce en múltiplos del resto anterior b hasta que a sea menor que b . Entonces a es el siguiente resto r k . Luego b se reduce en múltiplos de a hasta que nuevamente sea menor que a , dando el siguiente resto r k +1 , y así sucesivamente.
La versión recursiva [ 20 ] se basa en la igualdad de los MCD de restos sucesivos y la condición de parada mcd( r N −1 , 0) = r N −1 .
función mcd(a, b) si b = 0 devuelve a sino devuelve mcd(b, a mod b)
(Como se indicó anteriormente, si se permiten entradas negativas o si la modfunción puede devolver valores negativos, la instrucción return adebe reemplazarse por return max(a, −a).)
A modo de ejemplo, el mcd(1071, 462) se calcula a partir del equivalente mcd(462, 1071 mod 462) = mcd(462, 147) . Este último mcd se calcula a partir de mcd(147, 462 mod 147) = mcd(147, 21) , que a su vez se calcula a partir de mcd(21, 147 mod 21) = mcd(21, 0) = 21 .
Método de los restos absolutos mínimos
En otra versión del algoritmo de Euclides, el cociente en cada paso se incrementa en uno si el resto negativo resultante es de menor magnitud que el resto positivo típico. [ 21 ] [ 22 ] Anteriormente, la ecuación
- r k −2 = q k r k −1 + r k
Se supuso que | r k −1 | > r k > 0 . Sin embargo, se puede calcular un resto negativo alternativo e k :
- r k −2 = ( q k + 1) r k −1 + e k
si r k −1 > 0 o
- r k −2 = ( q k – 1) r k −1 + e k
si r k −1 < 0 .
Si r k se reemplaza por e k . cuando | e k | < | r k | , entonces se obtiene una variante del algoritmo euclidiano tal que
- | r k | ≤ | r k −1 | / 2
en cada paso.
Leopold Kronecker ha demostrado que esta versión requiere el menor número de pasos de cualquier versión del algoritmo de Euclides. [ 21 ] [ 22 ] De manera más general, se ha demostrado que, para cada número de entrada a y b , el número de pasos es mínimo si y solo si q k se elige de manera quedóndees la proporción áurea . [ 23 ]
Desarrollo histórico

El algoritmo euclidiano es uno de los algoritmos más antiguos de uso común. [ 24 ] Aparece en los Elementos de Euclides (c. 300 a. C.), específicamente en el Libro 7 (Proposiciones 1-2) y el Libro 10 (Proposiciones 2-3). En el Libro 7, el algoritmo se formula para números enteros, mientras que en el Libro 10 se formula para longitudes de segmentos de línea. (En el uso moderno, se diría que se formuló allí para números reales . Pero las longitudes, áreas y volúmenes, representados como números reales en el uso moderno, no se miden en las mismas unidades y no existe una unidad natural de longitud, área o volumen; el concepto de números reales era desconocido en ese momento). El último algoritmo es geométrico. El MCD de dos longitudes a y b corresponde a la mayor longitud g que mide a y b de manera exacta; en otras palabras, las longitudes a y b son múltiplos enteros de la longitud g .
El algoritmo probablemente no fue descubierto por Euclides , quien recopiló resultados de matemáticos anteriores en sus Elementos . [ 25 ] [ 26 ] El matemático e historiador BL van der Waerden sugiere que el Libro VII deriva de un libro de texto sobre teoría de números escrito por matemáticos en la escuela de Pitágoras . [ 27 ] El algoritmo probablemente era conocido por Eudoxo de Cnido (alrededor del 375 a. C.). [ 24 ] [ 28 ] El algoritmo incluso puede ser anterior a Eudoxo, [ 29 ] [ 30 ] a juzgar por el uso del término técnico ἀνθυφαίρεσις ( anthyphairesis , sustracción recíproca) en obras de Euclides y Aristóteles . [ 31 ] Claude Brezinski, siguiendo observaciones de Pappus de Alejandría , atribuye el algoritmo a Teeteto (c. 417 – c. 369 a. C.). [ 32 ]
Siglos después, el algoritmo de Euclides fue descubierto de forma independiente tanto en India como en China, [ 33 ] principalmente para resolver ecuaciones diofánticas que surgieron en astronomía y para hacer calendarios precisos. A finales del siglo V, el matemático y astrónomo indio Aryabhata describió el algoritmo como el "pulverizador", [ 34 ] quizás debido a su eficacia para resolver ecuaciones diofánticas. [ 35 ] Aunque un caso especial del teorema chino del resto ya había sido descrito en el libro chino Sunzi Suanjing , [ 36 ] la solución general fue publicada por Qin Jiushao en su libro de 1247 Shushu Jiuzhang (數書九章Tratado matemático en nueve secciones ). [ 37 ] El algoritmo euclidiano fue descrito numéricamente por primera vez y popularizado en Europa en la segunda edición de Problèmes plaisants et délectables ( Problemas agradables y entretenidos , 1624) de Bachet . [ 34 ] En Europa, también se utilizó para resolver ecuaciones diofánticas y para desarrollar fracciones continuas . El algoritmo euclidiano extendido fue publicado por el matemático inglés Nicholas Saunderson , [ 38 ] quien se lo atribuyó a Roger Cotes como un método para calcular fracciones continuas de manera eficiente. [ 39 ]
En el siglo XIX, el algoritmo euclidiano condujo al desarrollo de nuevos sistemas numéricos, como los enteros gaussianos y los enteros de Eisenstein . En 1815, Carl Gauss utilizó el algoritmo euclidiano para demostrar la factorización única de los enteros gaussianos , aunque su trabajo se publicó por primera vez en 1832. [ 40 ] Gauss mencionó el algoritmo en sus Disquisitiones Arithmeticae (publicadas en 1801), pero solo como un método para fracciones continuas . [ 33 ] Peter Gustav Lejeune Dirichlet parece haber sido el primero en describir el algoritmo euclidiano como la base de gran parte de la teoría de números. [ 41 ] Lejeune Dirichlet señaló que muchos resultados de la teoría de números, como la factorización única, serían válidos para cualquier otro sistema de números al que se pudiera aplicar el algoritmo euclidiano. [ 42 ] Las conferencias de Lejeune Dirichlet sobre teoría de números fueron editadas y ampliadas por Richard Dedekind , quien utilizó el algoritmo de Euclides para estudiar los enteros algebraicos , un nuevo tipo general de número. Por ejemplo, Dedekind fue el primero en demostrar el teorema de los dos cuadrados de Fermat utilizando la factorización única de los enteros gaussianos. [ 43 ] Dedekind también definió el concepto de dominio euclidiano , un sistema numérico en el que se puede definir una versión generalizada del algoritmo euclidiano (como se describe más adelante ). En las últimas décadas del siglo XIX, el algoritmo euclidiano fue gradualmente eclipsado por la teoría de ideales más general de Dedekind . [ 44 ]
"[El algoritmo euclidiano] es el precursor de todos los algoritmos, porque es el algoritmo no trivial más antiguo que ha sobrevivido hasta nuestros días."
Otras aplicaciones del algoritmo de Euclides se desarrollaron en el siglo XIX. En 1829, Charles Sturm demostró que el algoritmo era útil en el método de la cadena de Sturm para contar las raíces reales de polinomios en cualquier intervalo dado. [ 45 ]
El algoritmo euclidiano fue el primer algoritmo de relaciones enteras , un método para encontrar relaciones enteras entre números reales conmensurables. Se han desarrollado varios algoritmos novedosos de relaciones enteras , como el algoritmo de Helaman Ferguson y RW Forcade (1979) [ 46 ] y el algoritmo LLL . [ 47 ] [ 48 ]
En 1969, Cole y Davie desarrollaron un juego para dos jugadores basado en el algoritmo euclidiano, llamado El Juego de Euclides , [ 49 ] que tiene una estrategia óptima. [ 50 ] Los jugadores comienzan con dos pilas de a y b piedras. Los jugadores se turnan para quitar m múltiplos de la pila más pequeña de la más grande. Así, si las dos pilas constan de x e y piedras, donde x es mayor que y , el siguiente jugador puede reducir la pila más grande de x piedras a x − my piedras, siempre que este último sea un entero no negativo. Gana el primer jugador en reducir una pila a cero piedras. [ 51 ] [ 52 ]
Aplicaciones matemáticas
La identidad de Bézout
La identidad de Bézout establece que el máximo común divisor g de dos enteros a y b puede representarse como una suma lineal de los dos números originales a y b . [ 53 ] En otras palabras, siempre es posible encontrar enteros s y t tales que g = sa + tb . [ 54 ] [ 55 ]
Los enteros s y t se pueden calcular a partir de los cocientes q 0 , q 1 , etc., invirtiendo el orden de las ecuaciones en el algoritmo de Euclides. [ 56 ] Comenzando con la penúltima ecuación, g se puede expresar en términos del cociente q N −1 y los dos restos precedentes, r N −2 y r N −3 :
- g = r N −1 = r N −3 − q N −1 r N −2 .
Esos dos restos pueden expresarse igualmente en términos de sus cocientes y restos precedentes,
- r N −2 = r N −4 − q N −2 r N −3 y
- r N −3 = r N −5 − q N −3 r N −4 .
Sustituyendo estas fórmulas para r N −2 y r N −3 en la primera ecuación se obtiene g como una suma lineal de los restos r N −4 y r N −5 . El proceso de sustitución de restos por fórmulas que involucran a sus predecesores puede continuarse hasta alcanzar los números originales a y b :
- r 2 = r 0 − q 2 r 1
- r 1 = b − q 1 r 0
- r 0 = a − q 0 b .
Después de sustituir todos los restos r 0 , r 1 , etc., la ecuación final expresa g como una suma lineal de a y b , de modo que g = sa + tb .
El algoritmo euclidiano, y por lo tanto la identidad de Bézout, puede generalizarse al contexto de los dominios euclidianos .
Ideales principales y problemas relacionados
La identidad de Bézout proporciona otra definición del máximo común divisor g de dos números a y b . [ 12 ] Consideremos el conjunto de todos los números ua + vb , donde u y v son dos enteros cualesquiera. Dado que a y b son ambos divisibles por g , cada número del conjunto es divisible por g . En otras palabras, cada número del conjunto es un múltiplo entero de g . Esto es cierto para cada divisor común de a y b . Sin embargo, a diferencia de otros divisores comunes, el máximo común divisor es un miembro del conjunto; por la identidad de Bézout, eligiendo u = s y v = t se obtiene g . Un divisor común menor no puede ser un miembro del conjunto, ya que cada miembro del conjunto debe ser divisible por g . Recíprocamente, cualquier múltiplo m de g se puede obtener eligiendo u = ms y v = mt , donde s y t son los enteros de la identidad de Bézout. Esto se puede ver multiplicando la identidad de Bézout por m ,
- mg = msa + mtb .
Por lo tanto, el conjunto de todos los números ua + vb es equivalente al conjunto de múltiplos m de g . En otras palabras, el conjunto de todas las sumas posibles de múltiplos enteros de dos números ( a y b ) es equivalente al conjunto de múltiplos de mcd( a , b ) . Se dice que el MCD es el generador del ideal de a y b . Esta definición de MCD dio origen a los conceptos algebraicos abstractos modernos de ideal principal (un ideal generado por un solo elemento) y dominio de ideales principales (un dominio en el que todo ideal es un ideal principal).
Ciertos problemas pueden resolverse utilizando este resultado. [ 57 ] Por ejemplo, consideremos dos vasos medidores de volumen a y b . Al sumar/restar u múltiplos del primer vaso y v múltiplos del segundo, se puede medir cualquier volumen ua + vb . Todos estos volúmenes son múltiplos de g = mcd( a , b ) .
Algoritmo euclidiano extendido
Los enteros s y t de la identidad de Bézout se pueden calcular eficientemente utilizando el algoritmo euclidiano extendido . Esta extensión añade dos ecuaciones recursivas al algoritmo de Euclides [ 58 ].
- s k = s k −2 − q k s k −1
- t k = t k −2 − q k t k −1
con los valores iniciales
- s −2 = 1, t −2 = 0
- s −1 = 0, t −1 = 1 .
Utilizando esta recursión, los enteros de Bézout s y t vienen dados por s = s N y t = t N , donde N + 1 es el paso en el que el algoritmo termina con r N +1 = 0 .
La validez de este enfoque se puede demostrar por inducción. Supongamos que la fórmula de recursión es correcta hasta el paso k − 1 del algoritmo; en otras palabras, supongamos que
- r j = s j a + t j b
para todo j menor que k . El k -ésimo paso del algoritmo da la ecuación
- r k = r k −2 − q k r k −1 .
Dado que se ha asumido que la fórmula de recursión es correcta para r k −2 y r k −1 , estas pueden expresarse en términos de las variables s y t correspondientes.
- r k = ( s k −2 a + t k −2 b ) − q k ( s k −1 a + t k −1 b ) .
Reorganizando esta ecuación se obtiene la fórmula de recursión para el paso k , como se requiere.
- r k = s k a + t k b = ( s k −2 − q k s k −1 ) a + ( t k −2 − q k t k −1 ) b .
Método matricial
Los enteros s y t también se pueden encontrar utilizando un método matricial equivalente . [ 59 ] La secuencia de ecuaciones del algoritmo de Euclides
se puede escribir como un producto de matrices cociente de 2×2 multiplicadas por un vector resto bidimensional
Sea M el producto de todas las matrices cociente.
Esto simplifica el algoritmo euclidiano a la forma
Para expresar g como una suma lineal de a y b , ambos lados de esta ecuación se pueden multiplicar por la inversa de la matriz M. [ 59 ] [ 60 ] El determinante de M es igual a ( −1) N +1 , ya que es igual al producto de los determinantes de las matrices cociente, cada uno de los cuales es menos uno. Dado que el determinante de M nunca es cero, el vector de los restos finales se puede resolver utilizando la inversa de M.
Dado que la ecuación superior da
- g = (−1) N +1 ( m 22 a − m 12 b ) ,
Los dos enteros de la identidad de Bézout son s = (−1) N +1 m 22 y t = (−1) N m 12 . El método matricial es tan eficiente como la recursión equivalente, con dos multiplicaciones y dos sumas por paso del algoritmo euclidiano.
Lema de Euclides y factorización única
La identidad de Bézout es esencial para muchas aplicaciones del algoritmo de Euclides, como demostrar la factorización única de números en factores primos. [ 61 ] Para ilustrar esto, supongamos que un número L se puede escribir como un producto de dos factores u y v , es decir, L = uv . Si otro número w también divide a L pero es coprimo con u , entonces w debe dividir a v , por el siguiente argumento: Si el máximo común divisor de u y w es 1 , entonces se pueden encontrar enteros s y t tales que
- 1 = su + tw
Por la identidad de Bézout. Multiplicando ambos lados por v se obtiene la relación:
- v = suv + twv = sL + twv
Dado que w divide a ambos términos del lado derecho, también debe dividir al lado izquierdo, v . Este resultado se conoce como el lema de Euclides . [ 62 ] Específicamente, si un número primo divide a L , entonces debe dividir al menos un factor de L. Recíprocamente, si un número w es coprimo con cada uno de una serie de números a₁ , a₂ , ... , aₙ , entonces w también es coprimo con su producto , a₁ × a₂ × ... × aₙ . [ 62 ]
El lema de Euclides basta para demostrar que todo número tiene una única factorización en números primos. [ 63 ] Para ver esto, supongamos lo contrario, que existen dos factorizaciones independientes de L en m y n factores primos, respectivamente.
- L = p 1 p 2 ... p m = q 1 q 2 ... q n .
Dado que cada número primo p divide a L por hipótesis, también debe dividir a uno de los q factores; y como cada q también es primo, entonces p = q . Dividiendo iterativamente por los p factores se demuestra que cada p tiene un equivalente q ; las dos factorizaciones primas son idénticas, salvo por su orden. La factorización única de números en primos tiene numerosas aplicaciones en demostraciones matemáticas, como se muestra a continuación.
Ecuaciones diofánticas lineales

Las ecuaciones diofánticas son ecuaciones cuyas soluciones están restringidas a números enteros; reciben su nombre del matemático alejandrino Diofanto , del siglo III . [ 64 ] Una ecuación diofántica lineal típica busca números enteros x e y tales que [ 65 ]
- ax + by = c
donde a , b y c son números enteros dados. Esto se puede escribir como una ecuación para x en aritmética modular :
- ax ≡ c mod b .
Sea g el máximo común divisor de a y b . Ambos términos en ax + by son divisibles por g ; por lo tanto, c también debe ser divisible por g , o la ecuación no tiene soluciones. Al dividir ambos lados por c / g , la ecuación se puede reducir a la identidad de Bézout.
- sa + tb = g ,
donde s y t se pueden encontrar mediante el algoritmo euclidiano extendido . [ 66 ] Esto proporciona una solución a la ecuación diofántica, x 1 = s ( c / g ) e y 1 = t ( c / g ) .
En general, una ecuación diofántica lineal no tiene soluciones o tiene un número infinito de soluciones. [ 67 ] Para encontrar esta última, consideremos dos soluciones, ( x 1 , y 1 ) y ( x 2 , y 2 ) , donde
- ax 1 + by 1 = c = ax 2 + by 2
o equivalentemente
- un ( x 1 - x 2 ) = segundo ( y 2 - y 1 ) .
Por lo tanto, la diferencia más pequeña entre dos soluciones x es b / g , mientras que la diferencia más pequeña entre dos soluciones y es a / g . Así, las soluciones pueden expresarse como
- x = x 1 − bu / g
- y = y 1 + au / g .
Al permitir que u varíe sobre todos los enteros posibles, se puede generar una familia infinita de soluciones a partir de una única solución ( x 1 , y 1 ) . Si se requiere que las soluciones sean enteros positivos ( x > 0, y > 0) , solo puede ser posible un número finito de soluciones. Esta restricción en las soluciones aceptables permite que algunos sistemas de ecuaciones diofánticas con más incógnitas que ecuaciones tengan un número finito de soluciones; [ 68 ] esto es imposible para un sistema de ecuaciones lineales cuando las soluciones pueden ser cualquier número real (véase Sistema subdeterminado ).
Inversos multiplicativos y el algoritmo RSA
Un cuerpo finito es un conjunto de números con cuatro operaciones generalizadas. Estas operaciones se denominan suma, resta, multiplicación y división, y poseen sus propiedades habituales, como la conmutatividad , la asociatividad y la distributividad . Un ejemplo de cuerpo finito es el conjunto de 13 números {0, 1, 2, ..., 12} mediante aritmética modular . En este cuerpo, los resultados de cualquier operación matemática (suma, resta, multiplicación o división) se reducen módulo 13 ; es decir, se suman o restan múltiplos de 13 hasta que el resultado se encuentra dentro del rango 0 – 12. Por ejemplo, el resultado de 5 × 7 = 35 mod 13 = 9. Dichos cuerpos finitos pueden definirse para cualquier primo p ; utilizando definiciones más sofisticadas, también pueden definirse para cualquier potencia m de un primo p m . Los campos finitos a menudo se denominan campos de Galois y se abrevian como GF( p ) o GF( p m ).
En un campo de este tipo con m números, cada elemento no nulo a tiene un inverso multiplicativo modular único , a −1 tal que aa −1 = a −1 a ≡ 1 mod m . Este inverso se puede encontrar resolviendo la ecuación de congruencia ax ≡ 1 mod m , [ 69 ] o la ecuación diofántica lineal equivalente [ 70 ].
- ax + mi = 1 .
Esta ecuación se puede resolver mediante el algoritmo euclidiano, como se describió anteriormente . Encontrar inversos multiplicativos es un paso esencial en el algoritmo RSA , ampliamente utilizado en el comercio electrónico ; específicamente, la ecuación determina el entero utilizado para descifrar el mensaje. [ 71 ] Aunque el algoritmo RSA utiliza anillos en lugar de cuerpos, el algoritmo euclidiano aún se puede usar para encontrar un inverso multiplicativo cuando existe. El algoritmo euclidiano también tiene otras aplicaciones en códigos correctores de errores ; por ejemplo, se puede usar como alternativa al algoritmo Berlekamp-Massey para decodificar códigos BCH y Reed-Solomon , que se basan en cuerpos de Galois. [ 72 ]
Teorema chino del resto
El algoritmo de Euclides también puede utilizarse para resolver múltiples ecuaciones diofánticas lineales. [ 73 ] Dichas ecuaciones surgen en el teorema chino del resto , que describe un método novedoso para representar un entero x . En lugar de representar un entero por sus dígitos, puede representarse por sus restos x i módulo un conjunto de N números coprimos m i : [ 74 ]
El objetivo es determinar x a partir de sus N restos x i . La solución consiste en combinar las múltiples ecuaciones en una única ecuación diofántica lineal con un módulo M mucho mayor que es el producto de todos los módulos individuales m i , y definir M i como
Por lo tanto, cada M i es el producto de todos los módulos excepto m i . La solución depende de encontrar N nuevos números h i tales que
Con estos números h i , cualquier entero x puede reconstruirse a partir de sus restos x i mediante la ecuación
Dado que estos números h i son los inversos multiplicativos de M i , se pueden encontrar utilizando el algoritmo de Euclides como se describe en la subsección anterior.
Árbol de Stern-Brocot
El algoritmo euclidiano se puede utilizar para organizar el conjunto de todos los números racionales positivos en un árbol de búsqueda binaria infinito , llamado árbol de Stern-Brocot . El número 1 (expresado como fracción 1/1) se coloca en la raíz del árbol, y la ubicación de cualquier otro número a / b se puede encontrar calculando mcd( a , b ) utilizando la forma original del algoritmo euclidiano, en la que cada paso reemplaza el mayor de los dos números dados por su diferencia con el menor (no por su resto), deteniéndose cuando se alcanzan dos números iguales. Un paso del algoritmo euclidiano que reemplaza el primero de los dos números corresponde a un paso en el árbol desde un nodo a su hijo derecho, y un paso que reemplaza el segundo de los dos números corresponde a un paso en el árbol desde un nodo a su hijo izquierdo. La secuencia de pasos construida de esta manera no depende de si a / b se da en su mínima expresión, y forma un camino desde la raíz hasta un nodo que contiene el número a / b . [ 75 ] Este hecho puede usarse para demostrar que cada número racional positivo aparece exactamente una vez en este árbol.
Por ejemplo, 3/4 se puede encontrar comenzando en la raíz, yendo una vez a la izquierda y luego dos veces a la derecha:

El algoritmo euclidiano guarda una relación casi idéntica con otro árbol binario sobre los números racionales llamado árbol de Calkin-Wilf . La diferencia radica en que el camino se invierte: en lugar de generar un camino desde la raíz del árbol hasta un destino, genera un camino desde el destino hasta la raíz.
fracciones continuas
El algoritmo euclidiano tiene una estrecha relación con las fracciones continuas . [ 76 ] La secuencia de ecuaciones se puede escribir de la forma
El último término del lado derecho siempre es igual al inverso del lado izquierdo de la siguiente ecuación. Por lo tanto, las dos primeras ecuaciones se pueden combinar para formar
La tercera ecuación puede usarse para sustituir el término del denominador r 1 / r 0 , obteniendo:
La razón final de los restos r k / r k −1 siempre se puede reemplazar usando la siguiente ecuación de la serie, hasta la ecuación final. El resultado es una fracción continua.
En el ejemplo resuelto anterior , se calculó el mcd(1071, 462), y los cocientes q k fueron 2, 3 y 7, respectivamente. Por lo tanto, la fracción 1071/462 se puede escribir
como puede confirmarse mediante cálculos.
Algoritmos de factorización
Calcular el máximo común divisor es un paso esencial en varios algoritmos de factorización de enteros , [ 77 ] como el algoritmo rho de Pollard , [ 78 ] el algoritmo de Shor , [ 79 ] el método de factorización de Dixon [ 80 ] y la factorización de curvas elípticas de Lenstra . [ 81 ] El algoritmo euclidiano puede utilizarse para encontrar este MCD de manera eficiente. La factorización de fracciones continuas utiliza fracciones continuas, que se determinan mediante el algoritmo de Euclides. [ 82 ]
Eficiencia algorítmica

La eficiencia computacional del algoritmo de Euclides ha sido estudiada exhaustivamente. [ 83 ] Esta eficiencia puede describirse mediante el número de pasos de división que requiere el algoritmo, multiplicado por el costo computacional de cada paso. El primer análisis conocido del algoritmo de Euclides se debe a AAL Reynaud en 1811, [ 84 ] quien demostró que el número de pasos de división en la entrada ( u , v ) está limitado por v ; posteriormente mejoró esto a v /2 + 2. Más tarde, en 1841, PJE Finck demostró [ 85 ] que el número de pasos de división es como máximo 2 log 2 v + 1, y por lo tanto el algoritmo de Euclides se ejecuta en tiempo polinomial en el tamaño de la entrada. [ 86 ] Émile Léger , en 1837, estudió el peor caso, que es cuando las entradas son números de Fibonacci consecutivos . [ 86 ] El análisis de Finck fue refinado por Gabriel Lamé en 1844, [ 87 ] quien demostró que el número de pasos necesarios para completar nunca es más de cinco veces el número h de dígitos en base 10 del número menor b . [ 88 ] [ 89 ]
En el modelo de costo uniforme (apropiado para analizar la complejidad del cálculo del MCD en números que caben en una sola palabra de máquina), cada paso del algoritmo toma un tiempo constante , y el análisis de Lamé implica que el tiempo total de ejecución también es O ( h ). Sin embargo, en un modelo de computación adecuado para el cálculo con números más grandes, el costo computacional de un solo cálculo de resto en el algoritmo puede ser tan grande como O ( h² ). [ 90 ] En este caso , el tiempo total para todos los pasos del algoritmo se puede analizar usando una serie telescópica , mostrando que también es O ( h² ). Las técnicas algorítmicas modernas basadas en el algoritmo de Schönhage-Strassen para la multiplicación rápida de enteros se pueden usar para acelerar esto, lo que lleva a algoritmos cuasilineales para el MCD. [ 91 ] [ 92 ]
Número de pasos
El número de pasos para calcular el MCD de dos números naturales, a y b , se puede denotar por T ( a , b ). [ 93 ] Si g es el MCD de a y b , entonces a = mg y b = ng para dos números coprimos m y n . Entonces
- T ( a , b ) = T ( m , n )
como se puede ver dividiendo todos los pasos del algoritmo euclidiano por g . [ 94 ] Por el mismo argumento, el número de pasos permanece igual si a y b se multiplican por un factor común w : T ( a , b ) = T ( wa , wb ). Por lo tanto, el número de pasos T puede variar drásticamente entre pares de números vecinos, como T( a , b ) y T( a , b + 1), dependiendo del tamaño de los dos MCD.
La naturaleza recursiva del algoritmo euclidiano da lugar a otra ecuación.
- T ( a , b ) = 1 + T ( b , r 0 ) = 2 + T ( r 0 , r 1 ) = … = N + T ( r N −2 , r N −1 ) = N + 1
donde T ( x , 0) = 0 por suposición. [ 93 ]
En el peor de los casos
Si el algoritmo euclidiano requiere N pasos para un par de números naturales a > b > 0, los valores más pequeños de a y b para los cuales esto es cierto son los números de Fibonacci F N +2 y F N +1 , respectivamente. [ 95 ] Más precisamente, si el algoritmo euclidiano requiere N pasos para el par a > b , entonces se tiene a ≥ F N +2 y b ≥ F N +1 . Esto se puede demostrar por inducción . [ 96 ] Si N = 1, b divide a sin resto; los números naturales más pequeños para los cuales esto es cierto son b = 1 y a = 2, que son F 2 y F 3 , respectivamente. Ahora supongamos que el resultado se cumple para todos los valores de N hasta M − 1. El primer paso del algoritmo de M pasos es a = q 0 b + r 0 , y el algoritmo euclidiano requiere M − 1 pasos para el par b > r 0 . Por hipótesis de inducción, se tiene b ≥ F M +1 y r 0 ≥ F M . Por lo tanto, a = q 0 b + r 0 ≥ b + r 0 ≥ F M +1 + F M = F M +2 , que es la desigualdad deseada. Esta demostración, publicada por Gabriel Lamé en 1844, representa el inicio de la teoría de la complejidad computacional [ 97 ] y también la primera aplicación práctica de los números de Fibonacci [ 95 ] .
Este resultado basta para demostrar que el número de pasos en el algoritmo de Euclides nunca puede ser mayor que cinco veces el número de sus dígitos (base 10). [ 98 ] Porque si el algoritmo requiere N pasos, entonces b es mayor o igual que F N +1 que a su vez es mayor o igual que φ N −1 , donde φ es la proporción áurea . Como b ≥ φ N −1 , entonces N − 1 ≤ log φ b . Como log 10 φ > 1/5, ( N − 1)/5 < log 10 φ log φ b = log 10 b . Por lo tanto, N ≤ 5 log 10 b . Así, el algoritmo euclidiano siempre necesita menos de O ( h ) divisiones, donde h es el número de dígitos en el número más pequeño b .
Promedio
El número promedio de pasos tomados por el algoritmo euclidiano se ha definido de tres maneras diferentes. La primera definición es el tiempo promedio T ( a ) requerido para calcular el MCD de un número dado a y un número natural menor b elegido con igual probabilidad de los enteros de 0 a a − 1 [ 93 ].
Sin embargo, dado que T ( a , b ) fluctúa drásticamente con el MCD de los dos números, la función promedio T ( a ) también es "ruidosa". [ 99 ]
Para reducir este ruido, se toma un segundo promedio τ ( a ) sobre todos los números coprimos con un
Hay φ ( a ) enteros coprimos menores que a , donde φ es la función totiente de Euler . Este promedio tau crece suavemente con a [ 100 ] [ 101 ]
con el error residual del orden de a −(1/6)+ ε , donde ε es infinitesimal . La constante C en esta fórmula se llama constante de Porter [ 102 ] y es igual a
donde γ es la constante de Euler-Mascheroni y ζ ′ es la derivada de la función zeta de Riemann . [ 103 ] [ 104 ] El coeficiente principal (12/π 2 ) ln 2 se determinó mediante dos métodos independientes. [ 105 ] [ 106 ]
Dado que el primer promedio se puede calcular a partir del promedio tau sumando sobre los divisores d de a [ 107 ]
se puede aproximar mediante la fórmula [ 108 ]
donde Λ( d ) es la función de Mangoldt . [ 109 ]
Un tercer promedio Y ( n ) se define como el número medio de pasos necesarios cuando tanto a como b se eligen aleatoriamente (con distribución uniforme) de 1 a n [ 108 ].
Sustituyendo la fórmula aproximada para T ( a ) en esta ecuación se obtiene una estimación para Y ( n ) [ 110 ]
Costo computacional por paso
En cada paso k del algoritmo euclidiano, se calcula el cociente q k y el resto r k para un par de enteros dados r k −2 y r k −1.
- r k −2 = q k r k −1 + r k .
El costo computacional por paso está asociado principalmente con encontrar q k , ya que el resto r k se puede calcular rápidamente a partir de r k −2 , r k −1 , y q k
- r k = r k −2 − q k r k −1 .
El costo computacional de dividir números de h bits se escala como O ( h ( ℓ + 1)) , donde ℓ es la longitud del cociente. [ 90 ]
En comparación, el algoritmo original de Euclides basado en la resta puede ser mucho más lento. Una sola división entera es equivalente al número de restas q del cociente . Si la razón de a y b es muy grande, el cociente es grande y se requerirán muchas restas. Por otro lado, se ha demostrado que los cocientes tienen una alta probabilidad de ser enteros pequeños. La probabilidad de un cociente q dado es aproximadamente ln | u /( u − 1) | donde u = ( q + 1) 2 . [ 111 ] A modo de ejemplo, la probabilidad de un cociente de 1, 2, 3 o 4 es aproximadamente 41,5%, 17,0%, 9,3% y 5,9%, respectivamente. Dado que la operación de resta es más rápida que la de división, particularmente para números grandes, [ 112 ] el algoritmo de Euclides basado en la resta es competitivo con la versión basada en la división. [ 113 ] Esto se explota en la versión binaria del algoritmo de Euclides. [ 114 ]
La combinación del número estimado de pasos con el costo computacional estimado por paso muestra que el algoritmo de Euclides crece cuadráticamente ( h² ) con el número promedio de dígitos h en los dos números iniciales a y b . Sea h₀ , h₁ , ..., hN⁻¹ el número de dígitos en los restos sucesivos r₀ , r₁ , ... , rN⁻¹ . Dado que el número de pasos N crece linealmente con h , el tiempo de ejecución está acotado por
Métodos alternativos
El algoritmo de Euclides se utiliza ampliamente en la práctica, especialmente para números pequeños, debido a su simplicidad. [ 115 ] Para comparar, se puede determinar la eficiencia de alternativas al algoritmo de Euclides.
Un método ineficiente para hallar el MCD de dos números naturales a y b consiste en calcular todos sus divisores comunes; el MCD es entonces el mayor divisor común. Los divisores comunes se pueden hallar dividiendo ambos números por enteros sucesivos desde 2 hasta el número menor b . El número de pasos de este método crece linealmente con b , o exponencialmente con el número de dígitos. Otro método ineficiente consiste en hallar los factores primos de uno o ambos números. Como se indicó anteriormente , el MCD es igual al producto de los factores primos compartidos por los dos números a y b . [ 8 ] Los métodos actuales para la factorización prima también son ineficientes; muchos sistemas criptográficos modernos incluso se basan en esa ineficiencia. [ 11 ]
El algoritmo binario MCD es una alternativa eficiente que sustituye la división con operaciones más rápidas al explotar la representación binaria utilizada por las computadoras. [ 116 ] [ 117 ] Sin embargo, esta alternativa también escala como O ( h ²) . Generalmente es más rápido que el algoritmo euclidiano en computadoras reales, aunque escala de la misma manera. [ 91 ] Se puede obtener eficiencia adicional examinando solo los dígitos principales de los dos números a y b . [ 118 ] [ 119 ] El algoritmo binario se puede extender a otras bases ( algoritmos k -arios), [ 120 ] con aumentos de velocidad de hasta cinco veces. [ 121 ] El algoritmo MCD de Lehmer utiliza el mismo principio general que el algoritmo binario para acelerar los cálculos de MCD en bases arbitrarias.
Un enfoque recursivo para enteros muy grandes (con más de 25 000 dígitos) conduce a algoritmos cuasilineales de MCD entero, [ 122 ] como los de Schönhage, [ 123 ] [ 124 ] y Stehlé y Zimmermann. [ 125 ] Estos algoritmos explotan la forma matricial 2×2 del algoritmo euclidiano dado anteriormente . Estos métodos cuasilineales generalmente escalan como O ( h log h 2 log log h ). [ 91 ] [ 92 ]
Generalizaciones
Aunque el algoritmo euclidiano se utiliza para hallar el máximo común divisor de dos números naturales (enteros positivos), puede generalizarse a los números reales y a otros objetos matemáticos, como polinomios , [ 126 ] enteros cuadráticos [ 127 ] y cuaterniones de Hurwitz . [ 128 ] En estos últimos casos, el algoritmo euclidiano se utiliza para demostrar la propiedad crucial de la factorización única, es decir, que dichos números pueden factorizarse de forma única en elementos irreducibles , los equivalentes de los números primos. La factorización única es esencial para muchas demostraciones de la teoría de números.
Números racionales y reales
El algoritmo de Euclides se puede aplicar a los números reales , como lo describe Euclides en el Libro 10 de sus Elementos . El objetivo del algoritmo es identificar un número real g tal que dos números reales dados, a y b , sean múltiplos enteros de él: a = mg y b = ng , donde m y n son enteros . [ 25 ] Esta identificación es equivalente a encontrar una relación entera entre los números reales a y b ; es decir, determina enteros s y t tales que sa + tb = 0. Si tal ecuación es posible, a y b se denominan longitudes conmensurables; de lo contrario, son longitudes inconmensurables . [ 129 ] [ 130 ]
El algoritmo euclidiano para números reales difiere de su contraparte para números enteros en dos aspectos. Primero, los restos r k son números reales, aunque los cocientes q k son enteros como antes. Segundo, no se garantiza que el algoritmo termine en un número finito N de pasos. Si lo hace, la fracción a / b es un número racional, es decir, la razón de dos enteros.
y puede escribirse como una fracción continua finita [ q 0 ; q 1 , q 2 , ..., q N ] . Si el algoritmo no se detiene, la fracción a / b es un número irracional y puede describirse mediante una fracción continua infinita [ q 0 ; q 1 , q 2 , …] . [ 131 ] Ejemplos de fracciones continuas infinitas son la razón áurea φ = [1; 1, 1, ...] y la raíz cuadrada de dos , √ 2 = [1; 2, 2, ...] . [ 132 ] Cuando se aplica a dos números reales arbitrarios, es improbable que el algoritmo se detenga, ya que casi todas las razones a / b de dos números reales son irracionales. [ 133 ]
Una fracción continua infinita puede truncarse en un paso k [ q 0 ; q 1 , q 2 , ..., q k ] para obtener una aproximación a a / b que mejora a medida que k aumenta. La aproximación se describe mediante convergentes m k / n k ; el numerador y los denominadores son coprimos y obedecen la relación de recurrencia.
donde m −1 = n −2 = 1 y m −2 = n −1 = 0 son los valores iniciales de la recursión. El m k / n k convergente es la mejor aproximación de número racional a / b con denominador n k : [ 134 ]
Polinomios
Los polinomios en una sola variable x se pueden sumar, multiplicar y factorizar en polinomios irreducibles , que son los análogos de los números primos para los enteros. El máximo común divisor g ( x ) de dos polinomios a ( x ) y b ( x ) se define como el producto de sus polinomios irreducibles comunes, que se pueden identificar utilizando el algoritmo euclidiano. [ 126 ] El procedimiento básico es similar al de los enteros. En cada paso k , se identifica un polinomio cociente qk ( x ) y un polinomio resto rk ( x ) para satisfacer la ecuación recursiva .
donde r −2 ( x ) = a ( x ) y r −1 ( x ) = b ( x ) . Cada polinomio cociente se elige de tal manera que cada resto sea cero o tenga un grado menor que el grado de su predecesor: deg[ r k ( x )] < deg[ r k −1 ( x )] . Dado que el grado es un entero no negativo y disminuye con cada paso, el algoritmo euclidiano concluye en un número finito de pasos. El último resto no nulo es el máximo común divisor de los dos polinomios originales, a ( x ) y b ( x ) . [ 135 ]
Por ejemplo, consideremos los siguientes dos polinomios de cuarto grado, cada uno de los cuales se factoriza en dos polinomios de cuarto grado.
Al dividir a ( x ) entre b ( x ) se obtiene un resto r 0 ( x ) = x 3 + (2/3) x 2 + (5/3) x − (2/3) . En el siguiente paso, b ( x ) se divide entre r 0 ( x ) obteniendo un resto r 1 ( x ) = x 2 + x + 2 . Finalmente, al dividir r 0 ( x ) entre r 1 ( x ) se obtiene un resto cero, lo que indica que r 1 ( x ) es el máximo común divisor polinomial de a ( x ) y b ( x ) , lo cual es consistente con su factorización.
Muchas de las aplicaciones descritas anteriormente para los enteros se extienden a los polinomios. [ 136 ] El algoritmo euclidiano se puede utilizar para resolver ecuaciones diofánticas lineales y problemas chinos de resto para polinomios; también se pueden definir fracciones continuas de polinomios.
El algoritmo euclidiano polinomial tiene otras aplicaciones, como las cadenas de Sturm , un método para contar los ceros de un polinomio que se encuentran dentro de un intervalo real dado . [ 137 ] Esto, a su vez, tiene aplicaciones en varias áreas, como el criterio de estabilidad de Routh-Hurwitz en la teoría de control . [ 138 ]
Finalmente, los coeficientes de los polinomios no tienen por qué provenir de números enteros, reales o incluso complejos. Por ejemplo, pueden provenir de un campo general, como los campos finitos GF( p ) descritos anteriormente. Las conclusiones correspondientes sobre el algoritmo euclidiano y sus aplicaciones se mantienen incluso para dichos polinomios. [ 126 ]
enteros gaussianos

Los enteros gaussianos son números complejos de la forma α = u + vi , donde u y v son enteros ordinarios [ nota 2 ] e i es la raíz cuadrada de menos uno . [ 139 ] Al definir un análogo del algoritmo euclidiano, se puede demostrar que los enteros gaussianos son factorizables de forma única, mediante el argumento anterior . [ 40 ] Esta factorización única es útil en muchas aplicaciones, como derivar todas las ternas pitagóricas o demostrar el teorema de Fermat sobre sumas de dos cuadrados . [ 139 ] En general, el algoritmo euclidiano es conveniente en tales aplicaciones, pero no esencial; por ejemplo, los teoremas a menudo se pueden demostrar mediante otros argumentos.
El algoritmo euclidiano desarrollado para dos enteros gaussianos α y β es casi idéntico al de los enteros ordinarios, [ 140 ] pero difiere en dos aspectos. Como antes, establecemos r −2 = α y r −1 = β , y la tarea en cada paso k es identificar un cociente q k y un resto r k tales que
donde cada resto es estrictamente menor que su predecesor: | r k | < | r k −1 | . La primera diferencia es que los cocientes y los restos son enteros gaussianos, y por lo tanto son números complejos . Los cocientes q k se obtienen generalmente redondeando las partes real y compleja de la razón exacta (como el número complejo α / β ) a los enteros más cercanos. [ 140 ] La segunda diferencia radica en la necesidad de definir cómo un resto complejo puede ser "menor" que otro. Para ello, se define una función de norma f ( u + vi ) = u 2 + v 2 , que convierte cada entero gaussiano u + vi en un entero ordinario. Después de cada paso k del algoritmo euclidiano, la norma del resto f ( r k ) es menor que la norma del resto precedente, f ( r k −1 ) . Dado que la norma es un entero no negativo y disminuye con cada paso, el algoritmo euclidiano para enteros gaussianos termina en un número finito de pasos. [ 141 ] El resto no nulo final es mcd( α , β ) , el entero gaussiano de mayor norma que divide tanto a α como a β ; es único salvo multiplicación por una unidad, ±1 o ± i . [ 142 ]
Muchas de las demás aplicaciones del algoritmo euclidiano se extienden a los enteros gaussianos. Por ejemplo, se puede utilizar para resolver ecuaciones diofánticas lineales y problemas chinos de resto para enteros gaussianos; [ 143 ] también se pueden definir fracciones continuas de enteros gaussianos. [ 140 ]
dominios euclidianos
Un conjunto de elementos bajo dos operaciones binarias , denominadas suma y multiplicación, se llama dominio euclidiano si forma un anillo conmutativo R y, en términos generales, si se puede realizar un algoritmo euclidiano generalizado sobre ellos. [ 144 ] [ 145 ] Las dos operaciones de dicho anillo no tienen por qué ser la suma y la multiplicación de la aritmética ordinaria; pueden ser más generales, como las operaciones de un grupo matemático o un monoide . Sin embargo, estas operaciones generales deben respetar muchas de las leyes que rigen la aritmética ordinaria, como la conmutatividad , la asociatividad y la distributividad .
El algoritmo euclidiano generalizado requiere una función euclidiana , es decir, una función f de R en el conjunto de los enteros no negativos tal que, para cualesquiera dos elementos no nulos a y b en R , existan q y r en R tales que a = qb + r y f ( r ) < f ( b ) . [ 146 ] Ejemplos de tales funciones son el valor absoluto para los enteros, el grado para los polinomios univariados y la norma para los enteros gaussianos superiores a . [ 147 ] [ 148 ] El principio básico es que cada paso del algoritmo reduce f inexorablemente; por lo tanto, si f solo puede reducirse un número finito de veces, el algoritmo debe detenerse en un número finito de pasos. Este principio se basa en la propiedad de buen orden de los enteros no negativos, que afirma que todo conjunto no vacío de enteros no negativos tiene un miembro mínimo. [ 149 ]
El teorema fundamental de la aritmética se aplica a cualquier dominio euclidiano: Cualquier número de un dominio euclidiano puede factorizarse de forma única en elementos irreducibles . Cualquier dominio euclidiano es un dominio de factorización única (DFU), aunque lo contrario no es cierto. [ 149 ] Los dominios euclidianos y los DFU son subclases de los dominios MCD , dominios en los que siempre existe un máximo común divisor de dos números. [ 150 ] En otras palabras, puede existir un máximo común divisor (para todos los pares de elementos en un dominio), aunque puede que no sea posible encontrarlo usando un algoritmo euclidiano. Un dominio euclidiano es siempre un dominio de ideales principales (DIP), un dominio integral en el que cada ideal es un ideal principal . [ 151 ] Nuevamente, lo contrario no es cierto: no todo DIP es un dominio euclidiano.
La factorización única de dominios euclidianos es útil en muchas aplicaciones. Por ejemplo, la factorización única de los enteros gaussianos es conveniente para derivar fórmulas para todas las ternas pitagóricas y para demostrar el teorema de Fermat sobre sumas de dos cuadrados . [ 139 ] La factorización única también fue un elemento clave en un intento de demostración del último teorema de Fermat publicado en 1847 por Gabriel Lamé, el mismo matemático que analizó la eficiencia del algoritmo de Euclides, basado en una sugerencia de Joseph Liouville . [ 152 ] El enfoque de Lamé requería la factorización única de números de la forma x + ωy , donde x e y son enteros, y ω = e 2 iπ / n es una raíz n- ésima de 1, es decir, ω n = 1 . Aunque este enfoque funciona para algunos valores de n (como n = 3 , los enteros de Eisenstein ), en general, estos números no se factorizan de forma única. Este fallo de factorización única en algunos cuerpos ciclotómicos llevó a Ernst Kummer al concepto de números ideales y, posteriormente, a Richard Dedekind a los ideales . [ 153 ]
Factorización única de enteros cuadráticos

Los anillos de enteros cuadráticos son útiles para ilustrar dominios euclidianos. Los enteros cuadráticos son generalizaciones de los enteros gaussianos en los que la unidad imaginaria i se reemplaza por un número ω . Por lo tanto, tienen la forma u + vω , donde u y v son enteros y ω tiene una de dos formas, dependiendo de un parámetro D. Si D no es igual a un múltiplo de cuatro más uno, entonces
Sin embargo, si D es igual a un múltiplo de cuatro más uno, entonces
Si la función f corresponde a una función norma , como la que se usa para ordenar los enteros gaussianos anteriores , entonces el dominio se conoce como norma-euclidiano . Los anillos norma-euclidianos de enteros cuadráticos son precisamente aquellos donde D es uno de los valores −11, −7, −3, −2, −1, 2, 3, 5, 6, 7, 11, 13, 17, 19, 21, 29, 33, 37, 41, 57 o 73. [ 154 ] [ 155 ] Los casos D = −1 y D = −3 producen los enteros gaussianos y los enteros de Eisenstein , respectivamente.
Si se permite que f sea cualquier función euclidiana, entonces la lista de posibles valores de D para los cuales el dominio es euclidiano aún no se conoce. [ 156 ] El primer ejemplo de un dominio euclidiano que no era norma-euclidiano (con D = 69 ) se publicó en 1994. [ 156 ] En 1973, Weinberger demostró que un anillo entero cuadrático con D > 0 es euclidiano si, y solo si, es un dominio de ideal principal , siempre que se cumpla la hipótesis generalizada de Riemann . [ 127 ]
Anillos no conmutativos
El algoritmo euclidiano puede aplicarse a algunos anillos no conmutativos, como el conjunto de cuaterniones de Hurwitz . [ 128 ] [ 157 ] Sean α y β dos elementos de dicho anillo. Tienen un divisor derecho común δ si α = ξδ y β = ηδ para alguna elección de ξ y η en el anillo. De manera similar, tienen un divisor izquierdo común si α = dξ y β = dη para alguna elección de ξ y η en el anillo. Dado que la multiplicación no es conmutativa, existen dos versiones del algoritmo euclidiano: una para divisores derechos y otra para divisores izquierdos. [ 128 ] [ 157 ] Eligiendo los divisores derechos, el primer paso para encontrar el mcd( α , β ) mediante el algoritmo euclidiano se puede escribir
donde ψ 0 representa el cociente y ρ 0 el resto. Aquí, el cociente y el resto se eligen de modo que (si no es cero) el resto tenga N ( ρ 0 ) < N ( β ) para una "función euclidiana" N definida de forma análoga a las funciones euclidianas de dominios euclidianos en el caso no conmutativo. [ 157 ] Esta ecuación muestra que cualquier divisor derecho común de α y β es también un divisor común del resto ρ 0 . La ecuación análoga para los divisores izquierdos sería
Con cualquiera de las dos opciones, el proceso se repite como se indicó anteriormente hasta que se identifique el máximo común divisor por la derecha o por la izquierda. Al igual que en el dominio euclidiano, el "tamaño" del resto ρ₀ ( formalmente, su función euclidiana o "norma") debe ser estrictamente menor que β , y debe haber solo un número finito de tamaños posibles para ρ₀ , de modo que se garantice la terminación del algoritmo. [ 158 ]
Muchos resultados para el MCD se extienden a números no conmutativos. Por ejemplo, la identidad de Bézout establece que el MCD derecho ( α , β ) puede expresarse como una combinación lineal de α y β . [ 159 ] En otras palabras, existen números σ y τ tales que
La identidad análoga para el MCD izquierdo es casi la misma:
La identidad de Bézout puede utilizarse para resolver ecuaciones diofánticas. Por ejemplo, una de las demostraciones estándar del teorema de los cuatro cuadrados de Lagrange , que establece que todo entero positivo puede representarse como suma de cuatro cuadrados, se basa en el máximo común divisor de cuaterniones de esta manera. [ 158 ]
Véase también
- Ritmo euclidiano , un método para utilizar el algoritmo euclidiano para generar ritmos musicales.
- Algoritmo de Jacobi-Perron , una generalización a n dimensiones.
Notas
- ↑ Algunos libros de texto ampliamente utilizados, como Topics in Algebra de IN Herstein y Algebra de Serge Lang , utilizan el término "algoritmo euclidiano" para referirse a la división euclidiana.
- ↑ La frase "entero ordinario" se usa comúnmente para distinguir los enteros usuales de los enteros gaussianos y, más generalmente, de los enteros algebraicos .
Referencias
- ^ Lamé, Gabriel (1844). "Note sur la limite du nombre des divisions dans la recherche du plus grand commun diviseur entre deux nombres entiers". Comptes Rendus des Séances de l'Académie des Sciences (en francés). 19 : 867–870 .
- ↑ Shallit, Jeffrey (1994-11-01). "Orígenes del análisis del algoritmo euclidiano" . Historia Mathematica . 21 (4): 401– 419. doi : 10.1006/hmat.1994.1031 . ISSN 0315-0860 .
- ↑ Stark 1978 , pág. 16
- ↑ Stark 1978 , pág. 21
- ↑ LeVeque 1996 , pág. 32
- ↑ LeVeque 1996 , pág. 31
- ↑ Grossman, JW (1990). Matemáticas discretas . Nueva York: Macmillan. pág. 213. ISBN 0-02-348331-8.
- 1 2 Schroeder 2005 , págs. 21–22
- ↑ Schroeder 2005 , pág. 19
- ↑ Ogilvy, CS ; Anderson, JT (1966). Excursiones en teoría de números . Nueva York: Oxford University Press . págs. 27–29 .
- 1 2 Schroeder 2005 , págs. 216–219
- 1 2 LeVeque 1996 , pág. 33
- ↑ Stark 1978 , pág. 25
- ↑ Ore 1948 , págs. 47–48
- ↑ Stark 1978 , pág. 18
- ↑ Kimberling, C. (1983). "Un algoritmo euclidiano visual". Mathematics Teacher . 76 : 108–109 .
- ↑ Dummit, David S.; Foote, Richard M. (2004). Álgebra abstracta . John Wiley & Sons, Inc. págs. 270–271 . ISBN 978-0-471-43334-7.
- ↑ Knuth 1997 , págs. 319–320
- ↑ Knuth 1997 , págs. 318–319
- ↑ Stillwell 1997 , pág. 14
- 1 2 Ore 1948 , pág. 43
- 1 2 Stewart, BM (1964). Teoría de los números (2.ª ed.). Nueva York: Macmillan. págs. 43–44 . LCCN 64010964 .
- ^ Lazard, D. (1977). "El mejor algoritmo de Euclides para K [ X ] y Z ". Comptes Rendus de l'Académie des Sciences (en francés). 284 : 1-4 .
- 1 2 Knuth 1997 , pág. 318
- 1 2 Weil, A. (1983). Teoría de los números . Boston: Birkhäuser. págs. 4–6 . ISBN 0-8176-3141-0.
- ↑ Jones, A. (1994). «Matemáticas griegas hasta el año 300 d. C.». Enciclopedia complementaria de la historia y la filosofía de las ciencias matemáticas . Nueva York: Routledge. págs. 46-48 . ISBN 0-415-09238-8.
- ^ van der Waerden, BL (1954). Despertar de la ciencia . traducido por Arnold Dresden. Groninga: P. Noordhoff Ltd. págs .
- ↑ von Fritz, K. (1945). "El descubrimiento de la inconmensurabilidad por Hipaso de Metaponto". Anales de Matemáticas . 46 (2): 242– 264. doi : 10.2307/1969021 . JSTOR 1969021 .
- ↑ Heath, TL (1949). Matemáticas en Aristóteles . Oxford Press. pp. 80–83 .
- ↑ Fowler, DH (1987). Las matemáticas de la Academia de Platón: una nueva reconstrucción . Oxford: Oxford University Press. pp. 31–66 . ISBN 0-19-853912-6.
- ^ Becker, O. (1933). "Eudoxus-Studien I. Eine voreuklidische Proportionslehre und ihre Spuren bei Aristoteles und Euklid". Quellen und Studien zur Geschichte der Mathematik B. 2 : 311-333 .
- ↑ Brezinski, Claude (1991). Historia de las fracciones continuas y los aproximantes de Padé . Springer Series in Computational Mathematics. Vol. 12. Springer-Verlag, Berlín. p. 6. doi : 10.1007 /978-3-642-58169-4 . ISBN 3-540-15286-5. MR 1083352 .
- 1 2 Stillwell 1997 , pág. 31
- 1 2 Tattersall 2005 , pág. 70
- ↑ Rosen 2000 , págs. 86–87
- ↑ Ore 1948 , págs. 247–248
- ↑ Tattersall 2005 , págs. 72, 184–185
- ↑ Saunderson, Nicholas (1740). Los elementos del álgebra en diez libros . University of Cambridge Press . Consultado el 1 de noviembre de 2016 .
- ↑ Tattersall 2005 , págs. 72–76
- ^ Gauss , CF (1832). "Theoria residuorum biquadraticorum". Com. Soc. Reg. Ciencia. Gött. Rec . 4 .Reimpreso en Gauss, CF (2011). "Theoria residuorum biquadraticorum commentatio prima". Trabajo . vol. 2. Universidad de Cambridge. Prensa. págs. 65 a 92. doi : 10.1017/CBO9781139058230.004 . ISBN 9781139058230.y Gauss, CF (2011). "Theoria residuorum biquadraticorum commentatio secunda". Trabajo . vol. 2. Universidad de Cambridge. Prensa. págs. 93–148 . doi : 10.1017/CBO9781139058230.005 . ISBN 9781139058230.
- ↑ Stillwell 1997 , págs. 31–32
- ↑ Lejeune Dirichlet 1894 , págs. 29–31
- ↑ Richard Dedekind en Lejeune Dirichlet 1894 , Suplemento XI
- ↑ Stillwell 2003 , págs. 41–42
- ^ Sturm, C. (1829). "Mémoire sur la résolution des équations numériques". Toro. Des sciences de Férussac (en francés). 11 : 419–422 .
- ↑ Ferguson, HRP ; Forcade, RW (1979). "Generalización del algoritmo euclidiano para números reales a todas las dimensiones superiores a dos" . Boletín de la Sociedad Matemática Americana . Nueva Serie. 1 (6): 912–914 . doi : 10.1090/S0273-0979-1979-14691-3 . MR 0546316 .
- ↑ Peterson, I. (12 de agosto de 2002). "Dándole un toque moderno al algoritmo de Euclides" . ScienceNews . Archivado del original el 16 de abril de 2009. Recuperado el 7 de abril de 2009 .
- ↑ Cipra, Barry Arthur (16 de mayo de 2000). "Lo mejor del siglo XX: los editores nombran los 10 mejores algoritmos" (PDF) . SIAM News . 33 (4). Sociedad de Matemáticas Industriales y Aplicadas . Archivado del original (PDF) el 22 de septiembre de 2016. Recuperado el 19 de julio de 2016 .
- ↑ Cole, AJ; Davie, AJT (1969). "Un juego basado en el algoritmo euclidiano y una estrategia ganadora para él". Math . Gaz . 53 (386): 354– 357. doi : 10.2307/3612461 . JSTOR 3612461. S2CID 125164797 .
- ↑ Spitznagel, EL (1973). "Propiedades de un juego basado en el algoritmo de Euclides". Math. Mag . 46 (2): 87– 92. doi : 10.2307/2689037 . JSTOR 2689037 .
- ↑ Rosen 2000 , pág. 95
- ↑ Roberts, J. (1977). Teoría elemental de números: un enfoque orientado a problemas . Cambridge, MA: MIT Press . págs. 1–8 . ISBN 0-262-68028-9.
- ↑ Jones, GA; Jones, JM (1998). "La identidad de Bezout". Teoría elemental de números . Nueva York: Springer-Verlag. págs. 7–11 .
- ↑ Rosen 2000 , pág. 81
- ↑ Cohn 1980 , pág. 104
- ↑ Rosen 2000 , pág. 91
- ↑ Schroeder 2005 , pág. 23
- ↑ Rosen 2000 , págs. 90–93
- 1 2 Koshy, T. (2002). Teoría elemental de números con aplicaciones . Burlington, MA: Harcourt/Academic Press. pp. 167–169 . ISBN 0-12-421171-2.
- ↑ Bach, E.; Shallit , J. (1996). Teoría algorítmica de números . Cambridge, MA: MIT Press. pp. 70–73 . ISBN 0-262-02405-5.
- ↑ Stark 1978 , págs. 26–36
- 1 2 Ore 1948 , pág. 44
- ↑ Stark 1978 , págs. 281–292
- ↑ Rosen 2000 , págs. 119–125
- ↑ Schroeder 2005 , págs. 106–107
- ↑ Schroeder 2005 , págs. 108–109
- ↑ Rosen 2000 , págs. 120–121
- ↑ Stark 1978 , pág. 47
- ↑ Schroeder 2005 , págs. 107–109
- ↑ Stillwell 1997 , págs. 186–187
- ↑ Schroeder 2005 , pág. 134
- ↑ Moon, TK (2005). Error Correction Coding: Mathematical Methods and Algorithms . John Wiley and Sons. p. 266. ISBN 0-471-64800-0.
- ↑ Rosen 2000 , págs. 143–170
- ↑ Schroeder 2005 , págs. 194–195
- ↑ Graham, R. ; Knuth, DE ; Patashnik, O. (1989). Matemáticas concretas . Addison-Wesley. p. 123.
- ↑ Vinogradov, IM (1954). Elementos de teoría de números . Nueva York: Dover. págs. 3–13 .
- ↑ Crandall y Pomerance 2001 , págs. 225–349
- ↑ Knuth 1997 , págs. 369–371
- ↑ Shor, PW (1997). "Algoritmos de tiempo polinomial para factorización prima y logaritmos discretos en una computadora cuántica". SIAM Journal on Scientific and Statistical Computing . 26 (5): 1484– 1509. arXiv : quant-ph/9508027 . Bibcode : 1995quant.ph..8027S . doi : 10.1137/s0097539795293172 . S2CID 2337707 .
- ↑ Dixon, JD (1981). "Factorización asintóticamente rápida de enteros" . Math. Comput . 36 (153): 255–260 . doi : 10.2307/2007743 . JSTOR 2007743 .
- ↑ Lenstra, HW Jr. (1987). "Factoring integers with elliptic curves". Annals of Mathematics . 126 (3): 649– 673. doi : 10.2307/1971363 . hdl : 1887/2140 . JSTOR 1971363 .
- ↑ Knuth 1997 , págs. 380–384
- ↑ Knuth 1997 , págs. 339–364
- ^ Reynaud, A.-A.-L. (1811). Traité d'arithmétique à l'usage des élèves qui se destinent à l'École Polytechnique (6ª ed.). París: Courcier. Nota 60, pág. 34. Como lo cita Shallit (1994) .
- ^ Finck, P.-J.-E. (1841). Traité élémentaire d'arithmétique à l'usage des candidats aux écoles spéciales (en francés). Derivaux.
- 1 2 Shallit 1994 .
- ^ Lamé, G. (1844). "Note sur la limite du nombre des divisions dans la recherche du plus grand commun diviseur entre deux nombres entiers". Comptes Rendus de l'Académie des Sciences (en francés). 19 : 867–870 .
- ↑ Grossman, H. (1924). "Sobre el número de divisiones para encontrar el MCD". The American Mathematical Monthly . 31 (9): 443. doi : 10.2307/2298146 . JSTOR 2298146 .
- ↑ Honsberger, R. (1976). Mathematical Gems II . The Mathematical Association of America . pp. 54–57 . ISBN 0-88385-302-7.
- 1 2 Knuth 1997 , págs. 257–261
- 1 2 3 Crandall y Pomerance 2001 , págs. 77–79, 81–85, 425–431
- 1 2 Möller, N. (2008). "Sobre el algoritmo de Schönhage y el cálculo del mcd entero subcuadrático" (PDF) . Matemáticas de la Computación . 77 (261): 589– 607. Bibcode : 2008MaCom..77..589M . doi : 10.1090/S0025-5718-07-02017-0 . Archivado (PDF) del original el 21 de agosto de 2010. Recuperado el 24 de marzo de 2009 .
- 1 2 3 Knuth 1997 , pág. 344
- ↑ Ore 1948 , pág. 45
- 1 2 Knuth 1997 , pág. 343
- ↑ Mollin 2008 , pág. 21
- ↑ LeVeque 1996 , pág. 35
- ↑ Mollin 2008 , págs. 21–22
- ↑ Knuth 1997 , pág. 353
- ↑ Knuth 1997 , pág. 357
- ↑ Tonkov, T. (1974). "Sobre la longitud promedio de fracciones continuas finitas" . Acta Arithmetica . 26 (1): 47– 57. doi : 10.4064/aa-26-1-47-57 .
- ↑ Knuth, Donald E. (1976). "Evaluación de la constante de Porter" . Computers & Mathematics with Applications . 2 (2): 137– 139. doi : 10.1016/0898-1221(76)90025-0 .
- ↑ Porter, JW (1975). "Sobre un teorema de Heilbronn". Mathematika . 22 (1): 20– 28. doi : 10.1112/S0025579300004459 .
- ↑ Knuth, DE (1976). "Evaluación de la constante de Porter" . Computers and Mathematics with Applications . 2 (2): 137– 139. doi : 10.1016/0898-1221(76)90025-0 .
- ↑ Dixon, JD (1970). "El número de pasos en el algoritmo euclidiano" . J. Number Theory . 2 (4): 414– 422. Bibcode : 1970JNT.....2..414D . doi : 10.1016/0022-314X(70)90044-2 .
- ↑ Heilbronn, HA (1969). "Sobre la longitud promedio de una clase de fracciones continuas finitas". En Paul Turán (ed.). Teoría y análisis de números . Nueva York: Plenum. pp. 87–96 . LCCN 76016027 .
- ↑ Knuth 1997 , pág. 354
- 1 2 Norton, GH (1990). "Sobre el análisis asintótico del algoritmo euclidiano" . Journal of Symbolic Computation . 10 (1): 53– 58. doi : 10.1016/S0747-7171(08)80036-3 .
- ↑ Knuth 1997 , pág. 355
- ↑ Knuth 1997 , pág. 356
- ↑ Knuth 1997 , pág. 352
- ↑ Wagon, S. (1999). Mathematica in Action . Nueva York: Springer-Verlag. págs. 335–336 . ISBN 0-387-98252-3.
- ↑ Cohen 1993 , pág. 14
- ↑ Cohen 1993 , págs. 14–15, 17–18
- ↑ Sorenson, Jonathan P. (2004). «Análisis del algoritmo generalizado del máximo común divisor binario». High primes and misdemeanours: lectures in honour of the 60th birthday of Hugh Cowie Williams . Fields Institute Communications. Vol. 41. Providence, RI: American Mathematical Society. pp. 327–340 . ISBN 9780821887592. MR 2076257 .
Los algoritmos que más se utilizan en la práctica hoy en día [para calcular el máximo común divisor] son probablemente el algoritmo binario y el algoritmo de Euclides para números más pequeños, y el algoritmo de Lehmer o la versión de Lebealean del
algoritmo del MCD
k -ario para números más grandes.
- ↑ Knuth 1997 , págs. 321–323
- ↑ Stein, J. (1967). "Problemas computacionales asociados con el álgebra de Racah". Journal of Computational Physics . 1 (3): 397– 405. Bibcode : 1967JCoPh...1..397S . doi : 10.1016/0021-9991(67)90047-2 .
- ↑ Knuth 1997 , pág. 328
- ↑ Lehmer, DH (1938). "Algoritmo de Euclides para números grandes". The American Mathematical Monthly . 45 (4): 227– 233. doi : 10.2307/2302607 . JSTOR 2302607 .
- ↑ Sorenson, J. (1994). "Dos algoritmos rápidos para el MCD". J. Algorithms . 16 (1): 110– 144. doi : 10.1006/jagm.1994.1006 .
- ↑ Weber, K. (1995). "El algoritmo acelerado de MCD" . ACM Trans. Math. Softw . 21 (1): 111– 122. doi : 10.1145/200979.201042 . S2CID 14934919 .
- ↑ Aho, A.; Hopcroft , J .; Ullman, J. (1974). El diseño y análisis de algoritmos informáticos . Nueva York: Addison–Wesley. págs. 300–310 . ISBN 0-201-00029-6.
- ^ Schönhage, A. (1971). "Schnelle Berechnung von Kettenbruchentwicklungen". Acta Informática (en alemán). 1 (2): 139– 144. doi : 10.1007/BF00289520 . S2CID 34561609 .
- ↑ Cesari, G. (1998). "Implementación paralela del algoritmo de MCD entero de Schönhage". En G. Buhler (ed.). Teoría algorítmica de números: Actas de ANTS-III, Portland, OR . Lecture Notes in Computer Science. Vol. 1423. Nueva York: Springer-Verlag. pp. 64–76 .
- ↑ Stehlé, D.; Zimmermann, P. (2005). " Revisión del método de tablas precisas de Gal ". Actas del 17.º Simposio IEEE sobre Aritmética Computacional (ARITH-17) . Los Alamitos, CA: IEEE Computer Society Press .
- 1 2 3 Lang, S. (1984). Álgebra (2.ª ed.). Menlo Park, CA: Addison–Wesley. págs. 190–194 . ISBN 0-201-05487-6.
- 1 2 Weinberger, P. (1973). "Sobre anillos euclidianos de enteros algebraicos". Proc. Sympos. Pure Math . Actas de simposios en matemáticas puras. 24. Providence, Rhode Island: 321–332 . doi : 10.1090/pspum/024/0337902 . ISBN 9780821814246.
- 1 2 3 Stillwell 2003 , págs. 151–152
- ↑ Boyer, CB; Merzbach, UC (1991). Historia de las matemáticas (2.ª ed.). Nueva York: Wiley. págs. 116–117 . ISBN 0-471-54397-7.
- ↑ Cajori, F (1894). Historia de las matemáticas . Nueva York: Macmillan. pág. 70 . Reimpreso, Dover Publications, 2004, ISBN 0-486-43874-0
- ^ Joux, Antoine (2009). Criptoanálisis algorítmico . Prensa CRC. pag. 33.ISBN 9781420070033.
- ↑ Fuks, DB; Tabachnikov, Serge (2007). Mathematical Omnibus: Thirty Lectures on Classic Mathematics . American Mathematical Society. p. 13. ISBN 9780821843161.
- ↑ Darling, David (2004). «La constante de Khintchine». El libro universal de las matemáticas: De Abracadabra a las paradojas de Zenón . John Wiley & Sons. pág. 175. ISBN 9780471667001.
- ↑ Williams, Colin P. (2010). Exploraciones en computación cuántica . Springer. págs. 277–278 . ISBN 9781846288876.
- ↑ Cox, Little y O'Shea 1997 , págs. 37–46
- ↑ Schroeder 2005 , págs. 254–259
- ↑ Grattan-Guinness, Ivor (1990). Convoluciones en las matemáticas francesas, 1800-1840: Del cálculo y la mecánica al análisis matemático y la física matemática. Volumen II: Los giros . Science Networks: Historical Studies. Vol. 3. Basilea, Boston, Berlín: Birkhäuser. pág. 1148. ISBN 9783764322380
Nuestro tema aquí es la "secuencia de Sturm" de funciones definidas a partir de una función y su derivada mediante el algoritmo de Euclides, para calcular el número de raíces reales de un polinomio dentro de un intervalo dado
. - ↑ Hairer, Ernst; Nørsett, Syvert P.; Wanner, Gerhard (1993). «El criterio de Routh-Hurwitz». Resolución de ecuaciones diferenciales ordinarias I: Problemas no rígidos . Serie Springer en matemáticas computacionales. Vol. 8 (2.ª ed.). Springer. págs. 81 y ss. ISBN 9783540566700.
- 1 2 3 Stillwell 2003 , págs. 101–116
- 1 2 3 Hensley, Doug (2006). Fracciones continuas . World Scientific. pág. 26. ISBN 9789812564771.
- ↑ Dedekind, Richard (1996). Teoría de los enteros algebraicos . Cambridge Mathematical Library. Cambridge University Press. págs. 22–24 . ISBN 9780521565189.
- ↑ Johnston, Bernard L.; Richman, Fred (1997). Números y simetría: Una introducción al álgebra . CRC Press. pág. 44. ISBN 9780849303012.
- ↑ Adams, William W.; Goldstein, Larry Joel (1976). Introducción a la teoría de números . Prentice-Hall. Ejercicio 24, pág. 205. ISBN 9780134912820Enunciar y
demostrar un análogo del teorema chino del resto para los enteros gaussianos.
- ↑ Stark 1978 , pág. 290
- ↑ Cohn 1980 , págs. 104–105
- ↑ Lauritzen, Niels (2003). Álgebra abstracta concreta: De los números a las bases de Gröbner . Cambridge University Press. pág. 130. ISBN 9780521534109.
- ↑ Lauritzen (2003) , pág. 132
- ↑ Lauritzen (2003) , pág. 161
- 1 2 Sharpe, David (1987). Anillos y factorización . Cambridge University Press. pág . 55. ISBN 9780521337182.
- ↑ Sharpe (1987) , pág. 52
- ↑ Lauritzen (2003) , pág. 131
- ^ Lamé, G. (1847). "Mémoire sur la résolution, en nombres complexes, de l'équation A n + B n + C n = 0". J. Matemáticas. Pures Appl. (en francés). 12 : 172-184 .
- ↑ Edwards, H. (2000). El último teorema de Fermat: una introducción genética a la teoría algebraica de números . Springer. pág. 76.
- ↑ Cohn 1980 , págs. 104–110
- ↑ LeVeque, WJ (2002) [1956]. Temas de teoría de números, volúmenes I y II . Nueva York: Dover Publications. págs. II:57, 81. ISBN 978-0-486-42539-9. Zbl 1009.11001 .
- 1 2 Clark, DA ( 1994 ). "Un campo cuadrático que es euclidiano pero no norma-euclidiano" . Manuscripta Mathematica . 83 (1): 327– 330. doi : 10.1007/BF02567617 . S2CID 895185. Zbl 0817.11047 .
- 1 2 3 Bueso, Gómez-Torrecillas y Verschoren (2003) ; véanse las pp. 37-38 para extensiones no conmutativas del algoritmo euclidiano y el Corolario 4.35, p. 40, para más ejemplos de anillos no conmutativos a los que se aplican.
- 1 2 Davidoff, Giuliana ; Sarnak, Peter; Valette, Alain (2003). "2.6 La aritmética de los cuaterniones enteros" . Teoría elemental de números, teoría de grupos y grafos de Ramanujan . Textos para estudiantes de la London Mathematical Society. Vol. 55. Cambridge University Press. págs. 59–70 . ISBN 9780521531436.
- ↑ Ribenboim, Paulo (2001). Teoría clásica de los números algebraicos . Universitext. Springer-Verlag. p. 104. ISBN 9780387950709.
Bibliografía
- Bueso, José; Gómez-Torrecillas, José; Verschoren, Alain (2003). Métodos algorítmicos en álgebra no conmutativa: aplicaciones a grupos cuánticos . Modelado matemático: teoría y aplicaciones. Vol. 17. Kluwer Academic Publishers, Dordrecht. doi : 10.1007/978-94-017-0285-0 . ISBN 1-4020-1402-3. MR 2006329 .
- Cohen, H. (1993). Un curso de teoría algebraica computacional de números . Nueva York: Springer-Verlag. ISBN 0-387-55640-0.
- Cohn, H. (1980). Teoría avanzada de números . Nueva York: Dover. ISBN 0-486-64023-X.
- Cox, D .; Little, J.; O'Shea, D. (1997). Ideales, variedades y algoritmos: una introducción a la geometría algebraica computacional y al álgebra conmutativa (2.ª ed.). Springer-Verlag. ISBN 0-387-94680-2.
- Crandall, R.; Pomerance , C. (2001). Números primos: una perspectiva computacional (1.ª ed.). Nueva York: Springer-Verlag. ISBN 0-387-94777-9.
- Lejeune Dirichlet, PG (1894). Dedekind, Richard (ed.). Vorlesungen über Zahlentheorie (Conferencias sobre teoría de números) (en alemán). Braunschweig: Vieweg. LCCN 03005859 . OCLC 490186017 . . Véase también Vorlesungen über Zahlentheorie
- Knuth, DE (1997). El arte de la programación informática , Volumen 2: Algoritmos seminuméricos (3.ª ed.). Addison–Wesley. ISBN 0-201-89684-2.
- LeVeque, WJ (1996) [1977]. Fundamentos de la teoría de números . Nueva York: Dover. ISBN 0-486-68906-9.
- Mollin, RA (2008). Teoría fundamental de números con aplicaciones (2.ª ed.). Boca Raton: Chapman & Hall/CRC. ISBN 978-1-4200-6659-3.
- Ore, O. (1948). Teoría de los números y su historia . Nueva York: McGraw-Hill.
- Rosen, KH (2000). Teoría elemental de números y sus aplicaciones (4.ª ed.). Reading, MA: Addison–Wesley. ISBN 0-201-87073-8.
- Schroeder, M. (2005). Teoría de los números en la ciencia y la comunicación (4.ª ed.). Springer-Verlag. ISBN 0-387-15800-6.
- Stark, H. (1978). Introducción a la teoría de números . MIT Press. ISBN 0-262-69060-8.
- Stillwell, J. (1997). Números y geometría . Nueva York: Springer-Verlag. ISBN 0-387-98289-2.
- Stillwell, J. (2003). Elementos de la teoría de números . Nueva York: Springer-Verlag. ISBN 0-387-95587-9.
- Tattersall, JJ (2005). Teoría elemental de números en nueve capítulos . Cambridge: Cambridge University Press . ISBN 978-0-521-85014-8.
Enlaces externos
- Demostraciones del algoritmo de Euclides
- Weisstein, Eric W. "Algoritmo euclidiano" . MathWorld .
- El algoritmo de Euclides en el punto de corte del nudo.
- El algoritmo de Euclides en PlanetMath .
- El algoritmo euclidiano en MathPages
- El juego de Euclides en cut-the-knot
- Música y el algoritmo de Euclides. Archivado el 9 de agosto de 2007 en la Wayback Machine.
- Algoritmos de teoría de números
- Euclides
