Algoritmo de Euclides

Algoritmo de Euclides
El algoritmo de Euclides es un método antiguo y eficaz para calcular el máximo común divisor (MCD). Fue originalmente descrito por Euclides en su obra Elementos. El algoritmo de Euclides extendido es una ligera modificación que permite además expresar al máximo común divisor como una combinación lineal. Este algoritmo tiene aplicaciones en diversas áreas comoálgebra, teoría de números y ciencias de la computación entre otras. Con unas ligeras modificaciones suele ser utilizado en computadoras electrónicas debido a su gran eficiencia.
Índice
[ocultar]

 

1 Algoritmo original de Euclides 2 Algoritmo de Euclides tradicional

o o 

2.1 Generalización 2.2 Descripción formal

3 Algoritmo de Euclides extendido

o o 

3.1 Fundamentos 3.2 Descripción formal

4 Aplicaciones

o o o 

4.1 Simplificar fracciones 4.2 Fracciones continuas 4.3 Inversos modulares

5 Complejidad del algoritmo

  

6 Implementación en pseudocódigo 7 Referencias 8 Enlaces externos

Algoritmo original de Euclides[editar]

AB y CD los segmentos conmensurables.

No cualquier par de segmentos es conmensurable. es decir.Ejemplo del algoritmo original de Euclides. como encontraron los pitagóricos cuando establecen que el lado y la diagonal de un cuadrado no son conmensurables. pero en el caso de dos segmentos conmensurables se desea hallar la mayor medida común posible. . PQ «mide» (mensura: medida) a los segmentos AB y CD. En la concepción griega de la matemática. los números se entendían como magnitudes geométricas. Un tema recurrente en la geometría griega es el de la conmensurabilidad de dos segmentos: dos segmentos (números) AB y CD son conmensurables cuando existe un tercer segmento PQ el cual cabe exactamente un número entero de veces en los primeros dos.

lo cual es lo contrario de lo que se supuso. entonces un número mayor que CF mide a los números AB y CD. Se necesita entonces encontrar la máxima medida común de AB yCD. Entonces CF es la mayor medida común de AB y CD. el menor siendo continuamente restado del mayor y que medirá al número que le precede. Entonces. lo que se ilustra en la siguiente transcripción.AB y CD serán primos uno del otro [Prop.2 . como FC mide AE y AE mide DF. Para encontrar la máxima medida común de dos números que no sean primos entre sí. Entonces CF mide a BEy también mide a EA. mide a todo BA por lo que mide también al residuo AE. G también mide a BE. Mide también a todo DC por lo que mide también al residuo CF. Afirmo que también es la mayor medida común posible porque si no lo fuera. algún número queda que medirá el número que le precede. Porque una unidad no quedará pues si no es así. VII. Y también se mide a sí mismo. CF mide tanto a AB y CD por lo que es una medida común deAB y CD. Dado que G mide a CD y CD mide a BE. aunque de acuerdo a la época tal método se explica en términos geométricos. Euclides. lo cual se quería demostrar. Por tanto también medirá todo CD. FC será entonces medida de DF. Esto es. sea éste G. Elementos VII. Por tanto. ningún número mayor a CF puede medir a los números AB y CD.1]. Además. Y sea CD midiendo BE dejando EA menor que sí mismo y seaEA midiendo DF dejando FC menor que sí mismo y sea FC medida de AE.Euclides describe en la proposición VI I. Si CD mide AB entonces es una medida común puesto que CD se mide a sí mismo. Pero si CD no mide a AB entonces algún número quedará de AB y CD.2 de sus Elementos un método que permite hallar la mayor medida común posible de dos números (segmentos) que no sean primos entre sí. Y es manifiesto que también es la mayor medida pues nada mayor a CD puede medir a CD. es decir el mayor mide al menor. Y AE mide a DF por lo que G también mide a DF. Así mide a todo BA y también mide a CD. Sean AB y CD los dos números que no son primos uno al otro. Por tanto. lo cual es imposible. Y CD mide a BE.

Si no hay residuo. En caso contrario obtenemos un nuevo residuo FC menor a EA. la notación significa máximo tener en cuenta que el máximo común divisor de cualquier número común divisor de y . 2. el algoritmo se describe como sigue: 1. Según lo antes mencionado.En lenguaje moderno. También es importante y es precisamente . 3.Como a=bq+r y c divide a y divide también a r. éste es menor que CD y podemos repetir el proceso: restamos EA tantas veces como sea posible de CD. también dividiría a a . Es posible demostrar que el máximo común divisor de ya y es el mismo que el (Sea c el máximo común divisor de .. Si al final no queda un residuo. Para fines prácticos. restamos CD de AB tantas veces como sea posible. Éste es el fundamento principal del algoritmo. El hecho de que los segmentos son conmesurables es clave para asegurar que el proceso termina tarde o temprano Algoritmo de Euclides tradicional[editar] Al dividir de y entre (números enteros). Si se obtiene un residuo EA. Entonces el último residuo obtenido es la mayor medida común. Si existiera otro número mayor que c que divide a b y a r. lo que contradice la hipótesis). El proceso se repite hasta que en algún momento no se obtiene residuo. EA es la medida común. se obtiene un cociente y y un residuo . por lo que c no sería el mcd de . Dados dos segmentos AB y CD (con AB>CD). entonces CD es la máxima medida común. para calcular el máximo común divisor de 2366 y 273 se puede proseguir de la siguiente manera: Paso Operación Significado 1 2366 dividido entre 273 es 8 y sobran 182 .

Si entonces y el algoritmo termina donde y Operación es el resto de dividir entre . Para calcular se utilizan estas mismas reglas 2. En otro caso.2 273 dividido entre 182 es 1 y sobran 91 3 182 dividido entre 91 es 2 y sobra 0 La secuencia de igualdades que . Dado que . si se desea encontrar el máximo común divisor de dos números naturales se siguen las siguientes reglas: 1. entonces se concluye que implican . Este mismo y . Asuma que llamamos Paso . procedimiento se puede aplicar a cualesquiera dos números naturales. En general. Aplicando estas reglas se obtiene la siguiente secuencia de operaciones: Significado 1 dividido entre es y sobran 2 dividido entre es y sobran 3 dividido entre es y sobran .

sino para cualesquiera elementos donde exista una "división con residuo". Generalización[editar] En realidad el algoritmo de Euclides funciona no sólo para los números naturales. A este tipo de divisiones se les llamadivisiones euclidianas y a los conjuntos donde se puede definir dicha división se les llama dominios euclídeos. Por ejemplo. se puede calcular el máximo común divisor de dos números enteros o de dos polinomios.dividido entre es y sobran dividido entre es y sobra Como la sucesión de residuos va disminuyendo. el conjunto de los números enteros y el de los polinomios con coeficientes racionales son dominios euclídeos porque podemos definir una división con residuo (véase División polinomial). Por ejemplo. De esta manera. para calcular el máximo común divisor de los polinomios siguiente secuencia de operaciones: Paso Operación Significado y el algoritmo de Euclides sugiere la 1 dividido entre es y sobra . El máximo común divisor es precisamente (el último residuo que no es cero). al final un residuo tiene que ser cero y es en ese momento cuando el algoritmo termina.

Algoritmo 1 de Euclides " significa "el residuo de dividir entre " Entrada: Valores y pertenecientes a un dominio euclídeo y Salida: Un máximo común divisor de 1. 2. En este caso la expresión " (véase Aritmética modular).2 dividido entre es y sobra 3 dividido entre es y sobra 0 De esta manera se concluye que su máximo común divisor es . haga lo siguiente: . 4. El resultado es: . 3. Descripción formal[editar] Se puede expresar este algoritmo de manera más formal usando pseudocódigo. 2. Mientras 1.

es conveniente conocer la siguiente caracterización. encontrar números enteros euclideano. es decir. Para multiplicar dos matrices de tamaño se usa la siguiente fórmula (véase Producto de matrices): dividido entre es y de resto " se escribe la ecuación (1) Supóngase que se utiliza el algoritmo de Euclides tradicional para calcular los valores y que ahí se describen. Se despeja el resto de cada ecuación. Por cada valor calculado se puede formar la matriz . 3. expresarlo como la mínima combinación . y tales que y . Se sustituye el resto de la última ecuación en la penúltima. en lugar de " (véase algoritmo de la división). En cada paso. además de encontrar un máximo común divisor de dos números enteros lineal de esos números. Esto se generaliza también hacia cualquier dominio Fundamentos[editar] Existen varias maneras de explicar el algoritmo de Euclides extendido. en areas de la comprensión y memorización de este algoritmo. Usando la ecuación (1) de manera repetida se puede calcular el producto las primeras matrices de este tipo: . Sin embargo. Algoritmo de Euclides extendido[editar] El algoritmo de Euclides extendido permite. y en todo paso se expresa cada resto como combinación lineal. 2. ya que requeriría memorizar todos los valores de . una de las más comunes consiste en la siguiente: 1. y la penúltima en la antepenúltima y así sucesivamente hasta llegar a la primera ecuación. Usar el algoritmo tradicional de Euclides.Vale la pena notar que este algoritmo no es eficiente ser implementado directamente en una computadora.

la sucesión de cocientes es Utilizando el primer renglón de esta matriz se puede leer que común divisor de 2366 y 273 como una combinación lineal. Es importante calcular en ese mismo orden. pues esta multiplicación de matrices equivale al método antes descrito donde se substituye cada ecuación en la anterior. La matriz . es decir. y aparece en el extremo derecho y la matriz . se ha encontrado la manera de expresar al máximo Descripción formal[editar] Para expresar el algoritmo de Euclides extendido es conveniente notar la manera en que se calculan los valores y con la multiplicación de matrices: De esta manera Algoritmo 2 de Euclides extendido y además . lo cual es la solución del problema. es decir. .Resulta ser que los valores Particularmente. Entonces se puede calcular en el izquierdo. Regresando al primer ejemplo. como y tienen la propiedad de que entonces se tiene . . Esta propiedad no debería ser sorprendente. Por lo tanto el algoritmo en pseudocódigo se puede expresar como sigue: Entrada: Valores y pertenecientes a un dominio euclídeo . expresan a como una combinación lineal de y .

4. 2. Se hacen las siempre que . Por ejemplo. El resultado es: es un máximo común divisor de y y se expresa haga lo siguiente: entre para obtener el cociente y el residuo Aplicaciones[editar] Simplificar fracciones[editar] Al momento de hacer cálculos con fracciones. Por ejemplo. 4. sólo se necesita dividir entre su máximo común Fracciones continuas[editar] La sucesión de divisiones que se efectúan al seguir algoritmo de Euclides puede ser utilizada para expresar una fracción cualquiera se debe a que si y . Luego entonces se concluye que . Esto . si se desea reducir divisiones y . entonces como fracción continua. la fracción racional). De manera más general. . es de gran importancia saber cómo simplificarlas. Para reducir una fracción cualquiera es equivalente con y (véase Número . Divida 2. 3.Salida: Un máximo común divisor de y . divisor. 3. primero se usa el algoritmo de Euclides para encontrar . Mientras 1. y valores y tales que 1.

3. 4. . para encontrar el máximo común divisor de Paso Operación y Significado el algoritmo genera la siguiente secuencia de divisiones: 1 93164 dividido entre 5826 es 15 y sobran 5774 2 5826 dividido entre 5774 es 1 y sobran 52 3 5774 dividido entre 52 es 111 y sobran 2 4 52 dividido entre 2 es 26 y sobra 0 Todas estas ecuaciones las podemos hacer parecidas a la ecuación ( 3): 1.(3) Por ejemplo. 2.

se obtiene Si se repite este proceso de substitución entonces se obtiene la expresión deseada: De manera más general. Cuando tiene (2) es congruente con módulo .Si se sustituye la segunda ecuación en la primera. en ambos casos obtenemos el mismo residuo (que es 2). Por ejemplo. en el ejemplo anterior se de la siguiente ecuación: . pero que se desconoce el valor . la fracción continua encontrada con este algoritmo siempre es de la forma Inversos modulares[editar] Artículo principal: Inverso multiplicativo (aritmética modular) Decimos que dos números enteros son congruentes módulo (aunque también se puede generalizar para cualquier otro dominio euclídeo) si al dividirlos entre obtenemos el mismo residuo (véase Congruencia). 7 es congruente con 12 módulo 5 porque al dividir 7 entre 5 y 12 entre 5. y se escribe . Supóngase que se conocen los valores de .

Basta con encontrar un valor tendría la solución deseada: que tenga la característica de que . si al usar el algoritmo de Euclides módulo . Por ejemplo. pues de esta manera al multiplicar la ecuación (2) por se Al valor se le llama inverso modular de tal que módulo . entonces ese inverso es 2. Más aún. Desafortunadamente este valor no siempre existe. entonces el valor es el inverso modular de Entonces con el algoritmo de Euclides extendido se calcula que modular. Entonces . Más aún. se desea resolver la . como . Por ejemplo. con . Como entonces 5 tiene un inverso Es decir que el valor de es . mientras que la unicidad depende de que el ) se obtiene . Complejidad del algoritmo[editar] . De hecho este valor existe si y sólo si y no existe ningún número entero entero soluciones depende de que extendido (ahora con ecuación (la condición de existencia de ).

si se desea calcular el máximo común divisor de Paso Operación Significado y se obtiene la siguiente secuencia de operaciones: 1 89 dividido entre 55 es 1 y sobran 34 2 55 dividido entre 34 es 1 y sobran 21 . El rojo indica pocas operaciones. El teorema de Lamé afirma que el caso peor para este algoritmo es cuando se le pide calcular el máximo común divisor de dos números consecutivos de la sucesión de Fibonacci.Gráfica del número de divisiones efectuadas en el algoritmo de Euclides. mientras que los colores eventualmente más azules representan mayor número de operaciones. Por ejemplo.

En general. .3 34 dividido entre 21 es 1 y sobran 13 4 21 dividido entre 13 es 1 y sobran 8 5 13 dividido entre 8 es 1 y sobran 5 6 8 dividido entre 5 es 1 y sobran 3 7 5 dividido entre 3 es 1 y sobran 2 8 3 dividido entre 2 es 1 y sobran 1 9 2 dividido entre 1 es 2 y sobra 0 En este ejemplo se observa que con estos dos números de dos dígitos decimales. esto significa que se requieren divisiones para calcular el máximo común divisor de y donde . el número de divisiones efectuadas por el algoritmo nunca supera 5 veces el número de dígitos que tienen estos números. En términos de complejidad computacional. se necesita hacer 9 divisiones.

no basta con saber el número de divisiones. Hay que recordar que el algoritmo de Euclides funciona tanto para polinomios como para números enteros. y en general. pero sólo hasta apenas el año 2002. la complejidad del algoritmo depende del número de divisiones efectuadas y del costo de cada división. Sin embargo. los algoritmos 1 y 2 no son muy apropiados para implementarse directamente en un lenguaje de programación. especialmente porque consumen mucha memoria. En el caso de los polinomios. el número de divisiones es donde es el grado de los polinomios. conviene usar estas variantes: Algoritmo de Euclides tradicional implementado de manera recurrente Función Si : entonces: El resultado es En otro caso: El resultado es Algoritmo de Euclides tradicional implementado de manera iterativa Función : . y sólo se desea calcular el máximo común divisor de dos números enteros. cualquier dominio Euclídeo. En cada caso. entonces el número promedio de divisiones necesarias es . Brigitte Vallée demostró que si los dos números se pueden representar con bits. Implementación en pseudocódigo[editar] En general. Si no se necesitan los valores intermedios.El número promedio de divisiones efectuadas por el algoritmo se estuvo investigando desde 1968.

Mientras haga lo siguiente: El resultado es Algoritmo de Euclides extendido implementado de manera recurrente Función Si : entonces: El resultado es En otro caso: El resultado es Algoritmo de Euclides extendido implementado de manera iterativa Función : Mientras Divida entre haga lo siguiente: para obtener un cociente y un residuo .

En otros lenguajes es necesario el uso de variables auxiliares. como por ejemplo en lenguaje C: aux1 = b. en R. etc. En lenguajes como C.c).z) = (a. Ruby o Maxima esta instrucción tiene una estructura muy similar.  significa que primero se evalúan los valores y luego se asigna . y = aux1. en Maxima es a : b. En lenguajes como Python.y. En otros lenguajes como Pascal se traduce en a := b. x = a. . Python y Visual Basic esto significa simplemente x = y.y.El resultado es Algoritmo de Euclides extendido implementado de manera iterativa con matrices Función : Mientras Divida entre haga lo siguiente: para obtener un cociente y un residuo El resultado es Acerca de la notación empleada:  significa "asigne a la variable el valor actual de ". e inclusive se utiliza la flecha x ← y como el caso de APL. Java. S y Ocaml es x <. z = aux2. como por ejemplo en Python: (x. aux2 = c.b.. C#.

Clifford (2009). mientras que en otros es a mod b (Visual Basic o Pascal) o bien a rem b (Ada).  Barrera Mora. Vallée. . Cormen. ISBN 978-0-521-85154-1. Joachim. Introducción a la Teoría de Grupos. Lluis. ISBN 9780-262-53305-8. significa "el cociente de dividir entre ". pp. Instituto de Matemáticas. Emilio. «The Euclidean Algorithm». Introduction to Algorithms. Paul (1997). Teoría de Números. ISBN 968-444-324-2. Leiserson. En muchos lenguajes de programación se implementa como a % b. A Computational Introduction to Number Theory and Algebra. Victor (2008). Ralph P. Introducción al análisis de algoritmos. Pérez Seguí. Brigitte (2002). «Divisibilidad». Matemáticas Discreta y Combinatoria. «Divisibilidad». María Luisa (2006). Cambridge University Press. Seymour. «Euclid’s algorithm». México: Trillas. Cambridge University Press. Matemáticas Discretas. Gerhard. Matemáticas Discretas. Lipson. Ronald. McGraw-Hill. Jürgen (2003). Referencias[editar]     von zur Gathen. Charles. Gilles. «Algoritmos para números grandes». Fundamentos de Algoritmia. A esta operación se le conoce también como la división truncada porque trunca la parte fraccionaria del número. ISSN 0196-6774 . Raggi. Francisco (2004). «Propiedades de los números enteros: Inducción matemática».     Lipschutz. ISBN 978-970-10-7236-3. «Dynamical Analysis of -Euclidean Algorithms».    Cárdenas. Shoup. México: Trillas. Otras maneras son a\b (Visual Basic) . Madrid: PRENTICE HALL. Publicaciones Electrónicas de la Sociedad Matemática Mexicana. Jesús (1998). Sánchez Velázquez. A esta operación se le conoce simplemente como módulo. Brassard. Richard (2005). UNAM. «Number-Theoretic Algorithms». ISBN 968-9161-02-4. Rivest. Fernando (2005). Bratley. ISBN 84-89660-00-X. Álgebra Superior. Francisco. Journal of Algorithms 44 (1). The MIT Press. Thomas. a div b (Pascal) o bien a//b (Python 3). ISBN 970-26-0637-3. Grimaldi (1998). 246-285. ISBN 968-24-4341-5. Stein. México: PEARSON EDUCACIÓN. «Análisis de algoritmos». ISBN 0-521-82646-2. ISBN 970-32-1170-0. «Introducción a la teoría de números». Marc (2009). Humberto. Tomás. «Definiciones y resultados generales». Johnsonbaugh. ISBN 968-24-3783-0. México: Addison Wesley Longman de México.  significa "el residuo de dividir entre ". En muchos lenguajes de programación esto se implementa simplemente como a/b. «Propiedades de los enteros». Modern Computer Algebra.

ISBN 978-970-817-000-0. Aurelio (2008). Álgebra. México: Grupo Editorial Patria. Algoritmo de Euclides. «Máximo común divisor». Implementación del algoritmo de Euclides extendido en la web Euclidean Algorithm de Wolfram MathWorld Categorías: Teoría de números elemental Algoritmos . El algoritmo de Euclides. Enlaces externos[editar]       Divisibilidad. Baldor.