fbpx
Wikipedia

Algoritmo de Euclides

El algoritmo de Euclides es un método antiguo y eficiente 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.

Algoritmo original de Euclides

 
AB y CD los segmentos conmensurables.
 
Ejemplo del algoritmo original de Euclides.

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 que cabe exactamente un número entero de veces en los primeros dos; es decir, PQ «mide» (mensura: medida) a los segmentos AB y CD.

No cualquier par de segmentos es conmensurable, 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.

Euclides describe en la proposición VI I.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í, aunque de acuerdo a la época tal método se explica en términos geométricos, lo que se ilustra en la siguiente transcripción.

Para encontrar la máxima medida común de dos números que no sean primos entre sí.
 

Sean AB y CD los dos números que no son primos uno al otro. Se necesita entonces encontrar la máxima medida común de AB y CD.

Si CD mide AB entonces es una medida común puesto que CD se mide a sí mismo. Y es manifiesto que también es la mayor medida pues nada mayor a CD puede medir a CD. Pero si CD no mide a AB entonces algún número quedará de AB y CD, el menor siendo continuamente restado del mayor y que medirá al número que le precede. Porque una unidad no quedará pues si no es así, AB y CD serán primos uno del otro [Prop. VII.1], lo cual es lo contrario de lo que se supuso.

Por tanto, algún número queda que medirá el número que le precede. Y sea CD midiendo BE dejando EA menor que sí mismo y sea EA midiendo DF dejando FC menor que sí mismo y sea FC medida de AE. Entonces, como FC mide AE y AE mide DF, FC será entonces medida de DF. Y también se mide a sí mismo. Por tanto también medirá todo CD. Y CD mide a BE. Entonces CF mide a BE y también mide a EA. Así mide a todo BA y también mide a CD. Esto es, CF mide tanto a AB y CD por lo que es una medida común de AB y CD.

Afirmo que también es la mayor medida común posible porque si no lo fuera, entonces un número mayor que CF mide a los números AB y CD, sea éste G. Dado que G mide a CD y CD mide a BE, G también mide a BE. Además, mide a todo BA por lo que mide también al residuo AE. Y AE mide a DF por lo que G también mide a DF. Mide también a todo DC por lo que mide también al residuo CF, es decir el mayor mide al menor, lo cual es imposible.

Por tanto, ningún número mayor a CF puede medir a los números AB y CD. Entonces CF es la mayor medida común de AB y CD, lo cual se quería demostrar.

En lenguaje moderno, el algoritmo se describe como sigue:

  1. Dados dos segmentos AB y CD (con AB>CD), restamos CD de AB tantas veces como sea posible. Si no hay residuo, entonces CD es la máxima medida común.
  2. Si se obtiene un residuo EA, este es menor que CD y podemos repetir el proceso: restamos EA tantas veces como sea posible de CD. Si al final no queda un residuo, EA es la medida común. En caso contrario obtenemos un nuevo residuo FC menor a EA.
  3. El proceso se repite hasta que en algún momento no se obtiene residuo. Entonces el último residuo obtenido es la mayor medida común.

El hecho de que los segmentos son conmesurables es clave para asegurar que el proceso termina tarde o temprano

Algoritmo de Euclides tradicional

Al dividir   entre   (números enteros), se obtiene un cociente   y un resto  . Es posible demostrar que el máximo común divisor de   y   es el mismo que el de   y  . Sea c el máximo común divisor de   y  , como   y   divide a   y a  , divide también a  . Si existiera otro número mayor que   que divide a   y a  , también dividiría a   , por lo que   no sería el mcd de   y  , lo que contradice la hipótesis). Este es el fundamento principal del algoritmo. También es importante tener en cuenta que el máximo común divisor de cualquier número   y es precisamente  . Para fines prácticos, la notación   significa máximo común divisor de   y  .

Según lo antes mencionado, 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  
2 273 dividido entre 182 es 1 y sobran 91  
3 182 dividido entre 91 es 2 y sobra 0  

La secuencia de igualdades   implican que  . Dado que  , entonces se concluye que  . Este mismo procedimiento se puede aplicar a cualesquiera dos números naturales. En general, si se desea encontrar el máximo común divisor de dos números naturales   y  , se siguen las siguientes reglas:

  1. Si   entonces   y el algoritmo termina
  2. En otro caso,   donde   es el resto de dividir   entre  . Para calcular   se utilizan estas mismas reglas

Asuma que llamamos   y  . Aplicando estas reglas se obtiene la siguiente secuencia de operaciones:

Paso Operación Significado
1   dividido entre   es   y sobran    
2   dividido entre   es   y sobran    
3   dividido entre   es   y sobran    
     
    dividido entre   es   y sobran    
    dividido entre   es   y sobra  

Como la sucesión de residuos va disminuyendo, al final un residuo tiene que ser cero y es en ese momento cuando el algoritmo termina. El máximo común divisor es precisamente   (el último residuo que no es cero).

Generalización

En realidad, el algoritmo de Euclides funciona no sólo para los números naturales, sino para cualquier elemento en el que exista una "división con residuo". A este tipo de divisiones se les llama divisiones euclidianas y a los conjuntos donde se puede definir dicha división se les llama dominios euclídeos. Por ejemplo, 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). De esta manera, se puede calcular el máximo común divisor de dos números enteros o de dos polinomios.

Por ejemplo, para calcular el máximo común divisor de los polinomios   y   el algoritmo de Euclides sugiere la siguiente secuencia de operaciones:

Paso Operación Significado
1   dividido entre   es   y sobra    
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  .

Descripción formal

Se puede expresar este algoritmo de manera más formal usando pseudocódigo. En este caso la expresión " " significa "el residuo de dividir   entre  " (véase Aritmética modular).

Algoritmo 1 de Euclides

Entrada: Valores   y   pertenecientes a un dominio euclídeo

Salida: Un máximo común divisor de   y  

  1.  ,  
  2.  
  3. Mientras   haga lo siguiente:
    1.  
    2.  
  4. El resultado es:  

Vale la pena notar que este algoritmo no es eficiente ser implementado directamente en una computadora, ya que requeriría memorizar todos los valores de  .

Algoritmo de Euclides extendido

El algoritmo de Euclides extendido permite, además de encontrar un máximo común divisor de dos números enteros   y  , expresarlo como la mínima combinación lineal de esos números, es decir, encontrar números enteros   y   tales que  . Esto se generaliza también hacia cualquier dominio euclidiano.

Fundamentos

Existen varias maneras de explicar el algoritmo de Euclides extendido, una de las más comunes consiste en la siguiente:

  1. Usar el algoritmo tradicional de Euclides. En cada paso, en lugar de "  dividido entre   es   y de resto  " se escribe la ecuación   (véase algoritmo de la división).
  2. Se despeja el resto de cada ecuación.
  3. Se sustituye el resto de la última ecuación en la penúltima, y la penúltima en la antepenúltima y así sucesivamente hasta llegar a la primera ecuación, y en todo paso se expresa cada resto como combinación lineal.

Sin embargo, en aras de la comprensión y memorización de este algoritmo, es conveniente conocer la siguiente caracterización. Para multiplicar dos matrices de tamaño   se usa la siguiente fórmula (véase Producto de matrices):

(1) 

Supóngase que se utiliza el algoritmo de Euclides tradicional para calcular los valores   y   que ahí se describen. Por cada valor   calculado se puede formar la matriz  . Usando la ecuación (1) de manera repetida se puede calcular el producto de las primeras   matrices de este tipo:

 

Resulta ser que los valores   y   tienen la propiedad de que  , es decir, expresan a   como una combinación lineal de   y  . Particularmente, como   entonces se tiene  , lo cual es la solución del problema. Esta propiedad no debería ser sorprendente, pues esta multiplicación de matrices equivale al método antes descrito donde se substituye cada ecuación en la anterior. Es importante calcular   en ese mismo orden. La matriz   aparece en el extremo derecho y la matriz   en el izquierdo.

Regresando al primer ejemplo, la sucesión de cocientes es  ,   y  . Entonces se puede calcular

 

Utilizando el primer renglón de esta matriz se puede leer que  , es decir, se ha encontrado la manera de expresar al máximo común divisor de 2366 y 273 como una combinación lineal.

Descripción formal

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   y además  . Por lo tanto el algoritmo en pseudocódigo se puede expresar como sigue:

Algoritmo 2 de Euclides extendido

Entrada: Valores   y   pertenecientes a un dominio euclídeo

Salida: Un máximo común divisor de   y  , y valores   y   tales que  

  1.  
  2.  
  3. Mientras   haga lo siguiente:
    1. Divida   entre   para obtener el cociente   y el residuo  
    2.  
    3.  
    4.  
  4. El resultado es:   es un máximo común divisor de   y   y se expresa  

Aplicaciones

Simplificar fracciones

Al momento de hacer cálculos con fracciones, es de gran importancia saber cómo simplificarlas. Por ejemplo, la fracción   es equivalente con   (véase Número racional). De manera más general,   siempre que  . Para reducir una fracción cualquiera  , sólo se necesita dividir   y   entre su máximo común divisor.

Por ejemplo, si se desea reducir  , primero se usa el algoritmo de Euclides para encontrar  . Se hacen las divisiones   y  . Luego entonces se concluye que  .

Fracciones continuas

La sucesión de divisiones que se efectúan al seguir el algoritmo de Euclides puede ser utilizada para expresar una fracción cualquiera   como fracción continua. Esto se debe a que si   y  , entonces

(3) 

Por ejemplo, para encontrar el máximo común divisor de   y   el algoritmo genera la siguiente secuencia de divisiones:

Paso Operación Significado
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 3):

  1.  
  2.  
  3.  
  4.  

Si se sustituye la segunda ecuación en la primera, se obtiene

 

Si se repite este proceso de substitución entonces se obtiene la expresión deseada:

 

De manera más general, la fracción continua encontrada con este algoritmo siempre es de la forma

 


Inversos módulo m

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). Por ejemplo, 7 es congruente con 12 módulo 5 porque al dividir 7 entre 5 y 12 entre 5, en ambos casos obtenemos el mismo residuo (que es 2). Cuando   es congruente con   módulo   se escribe  , en el ejemplo anterior se tiene  . Supóngase que se conocen los valores de  ,   y  , pero que se desconoce el valor   en la siguiente congruencia:

(2) 

Basta encontrar un valor   que satisfaga:  , pues de esta manera al multiplicar la ecuación (2) por   se tendrá la solución deseada:

 

Al elemento   se le llama "inverso módulo  " de  . Desafortunadamente este valor no siempre existe. Por ejemplo, con   y   no existe ningún número entero   tal que  . De hecho este valor existe si y sólo si   (la existencia de soluciones depende de la condición  , mientras que la unicidad depende de que el  ). Más aún, si al usar el algoritmo de Euclides extendido (ahora con  ) se obtiene  , entonces el valor   es el inverso módulo   de  . Por ejemplo, se desea resolver la ecuación

 

Entonces con el algoritmo de Euclides extendido se obtiene que  . Como   entonces 5 tiene un inverso módulo  . Más aún, como  , entonces ese inverso es 2. Entonces

 

Es decir que el valor de   es  .

Complejidad del algoritmo

 
Gráfica del número de divisiones efectuadas en el algoritmo de Euclides. El rojo indica pocas operaciones, mientras que los colores eventualmente más azules representan mayor número de 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. Por ejemplo, si se desea calcular el máximo común divisor de   y   se obtiene la siguiente secuencia de operaciones:

Paso Operación Significado
1 89 dividido entre 55 es 1 y sobran 34  
2 55 dividido entre 34 es 1 y sobran 21  
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, se necesita hacer 9 divisiones. En general, 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, esto significa que se requieren   divisiones para calcular el máximo común divisor de   y   donde  .

El número promedio de divisiones efectuadas por el algoritmo se estuvo investigando desde 1968, pero solo hasta apenas el año 2002, Brigitte Vallée demostró que si los dos números se pueden representar con   bits, entonces el número promedio de divisiones necesarias es  .

Sin embargo, 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, cualquier dominio Euclídeo. En cada caso, la complejidad del algoritmo depende del número de divisiones efectuadas y del costo de cada división. En el caso de los polinomios, el número de divisiones es   donde   es el grado de los polinomios.

Implementación en pseudocódigo

En general, los algoritmos 1 y 2 no son muy apropiados para implementarse directamente en un lenguaje de programación, especialmente porque consumen mucha memoria. Si no se necesitan los valores intermedios, y sólo se desea calcular el máximo común divisor de dos números enteros, 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  :

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   haga lo siguiente:
Divida   entre   para obtener un cociente   y un residuo  
 
El resultado es  
Algoritmo de Euclides extendido implementado de manera iterativa con matrices

Función  :

 
Mientras   haga lo siguiente:
Divida   entre   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  ". En lenguajes como C, Java, C#, Python y Visual Basic esto significa simplemente x = y. En otros lenguajes como Pascal se traduce en a := b, en Maxima es a : b, en R, S y Ocaml es x <- y, e inclusive se utiliza la flecha x ← y como el caso de APL.
  •   significa que primero se evalúan los valores   y luego se asigna  , etc. En lenguajes como Python, Ruby o Maxima esta instrucción tiene una estructura muy similar, como por ejemplo en Python: (x,y,z) = (a,b,c). En otros lenguajes es necesario el uso de variables auxiliares, como por ejemplo en lenguaje C: aux1 = b; aux2 = c; x = a; y = aux1; z = aux2;.
  •   significa "el cociente de dividir   entre  ". A esta operación se le conoce también como la división truncada porque trunca la parte fraccionaria del número. En muchos lenguajes de programación esto se implementa simplemente como a/b. Otras maneras son a\b (Visual Basic) , a div b (Pascal) o bien a//b (Python 3).
  •   significa "el residuo de dividir   entre  ". A esta operación se le conoce simplemente como módulo. En muchos lenguajes de programación se implementa como a % b, mientras que en otros es a mod b (Visual Basic o Pascal) o bien a rem b (Ada).

Véase también

Referencias

Bibliografía

  • von zur Gathen, Joachim; Gerhard, Jürgen (2003). «The Euclidean Algorithm». Modern Computer Algebra. Cambridge University Press. ISBN 0-521-82646-2. 
  • Shoup, Victor (2008). «Euclid’s algorithm». A Computational Introduction to Number Theory and Algebra. Cambridge University Press. ISBN 978-0-521-85154-1. 
  • Johnsonbaugh, Richard (2005). «Introducción a la teoría de números». Matemáticas Discretas. México: PEARSON EDUCACIÓN. ISBN 970-26-0637-3. 
  • Ralph P. Grimaldi (1998). «Propiedades de los números enteros: Inducción matemática». Matemáticas Discreta y Combinatoria. México: Addison Wesley Longman de México. ISBN 968-444-324-2. 
  • Lipschutz, Seymour; Lipson, Marc (2009). «Propiedades de los enteros». Matemáticas Discretas. McGraw-Hill. ISBN 978-970-10-7236-3. 
  • Brassard, Gilles; Bratley, Paul (1997). «Análisis de algoritmos». Fundamentos de Algoritmia. Madrid: PRENTICE HALL. ISBN 84-89660-00-X. 
  • Vallée, Brigitte (2002). . Journal of Algorithms 44 (1). ISSN 0196-6774 , pp. 246-285. Archivado desde el original el 2 de octubre de 2006. 
  • Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford (2009). «Number-Theoretic Algorithms». Introduction to Algorithms. The MIT Press. ISBN 978-0-262-53305-8. 
  • Barrera Mora, Fernando (2005). «Definiciones y resultados generales». Introducción a la Teoría de Grupos. Publicaciones Electrónicas de la Sociedad Matemática Mexicana. p. 16-17. ISBN 968-9161-02-4. Consultado el 2 de julio de 2017. 
  • Cárdenas, Humberto; Lluis, Emilio; Raggi, Francisco; Tomás, Francisco (2004). «Divisibilidad». Álgebra Superior. México: Trillas. ISBN 968-24-3783-0. 
  • Pérez Seguí, María Luisa (2006). «Divisibilidad». Teoría de Números. Instituto de Matemáticas, UNAM. ISBN 970-32-1170-0. 
  • Sánchez Velázquez, Jesús (1998). «Algoritmos para números grandes». Introducción al análisis de algoritmos. México: Trillas. ISBN 968-24-4341-5. 
  • Baldor, Aurelio (2008). «Máximo común divisor». Álgebra. México: Grupo Editorial Patria. ISBN 978-970-817-000-0. 

Enlaces externos

  •   Wikilibros alberga un libro o manual sobre implementaciones del algoritmo de Euclides.
  • Divisibilidad. El algoritmo de Euclides.
  • Weisstein, Eric W. «Euclidean Algorithm». En Weisstein, Eric W, ed. MathWorld (en inglés). Wolfram Research. 
  • Explicación dinámica del máximo común divisor en este vídeo de YouTube[1].
  • En gaussianos[2] se pueden ver explicaciones y ejemplos un poco más avanzados de este algoritmo.
  •   Datos: Q230848
  •   Multimedia: Euclidean algorithm

algoritmo, euclides, algoritmo, euclides, método, antiguo, eficiente, para, calcular, máximo, común, divisor, originalmente, descrito, euclides, obra, elementos, algoritmo, euclides, extendido, ligera, modificación, permite, además, expresar, máximo, común, di. El algoritmo de Euclides es un metodo antiguo y eficiente para calcular el maximo comun divisor MCD Fue originalmente descrito por Euclides en su obra Elementos El algoritmo de Euclides extendido es una ligera modificacion que permite ademas expresar al maximo comun divisor como una combinacion lineal Este algoritmo tiene aplicaciones en diversas areas como algebra teoria de numeros y ciencias de la computacion entre otras Con unas ligeras modificaciones suele ser utilizado en computadoras electronicas debido a su gran eficiencia Indice 1 Algoritmo original de Euclides 2 Algoritmo de Euclides tradicional 2 1 Generalizacion 2 2 Descripcion formal 3 Algoritmo de Euclides extendido 3 1 Fundamentos 3 2 Descripcion formal 4 Aplicaciones 4 1 Simplificar fracciones 4 2 Fracciones continuas 4 3 Inversos modulo m 5 Complejidad del algoritmo 6 Implementacion en pseudocodigo 7 Vease tambien 8 Referencias 9 Bibliografia 10 Enlaces externosAlgoritmo original de Euclides Editar AB y CD los segmentos conmensurables Ejemplo del algoritmo original de Euclides En la concepcion griega de la matematica los numeros se entendian como magnitudes geometricas Un tema recurrente en la geometria griega es el de la conmensurabilidad de dos segmentos dos segmentos numeros AB y CD son conmensurables cuando existe un tercer segmento PQ que cabe exactamente un numero entero de veces en los primeros dos es decir PQ mide mensura medida a los segmentos AB y CD No cualquier par de segmentos es conmensurable como encontraron los pitagoricos 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 comun posible Euclides describe en la proposicion VI I 2 de sus Elementos un metodo que permite hallar la mayor medida comun posible de dos numeros segmentos que no sean primos entre si aunque de acuerdo a la epoca tal metodo se explica en terminos geometricos lo que se ilustra en la siguiente transcripcion Para encontrar la maxima medida comun de dos numeros que no sean primos entre si Sean AB y CD los dos numeros que no son primos uno al otro Se necesita entonces encontrar la maxima medida comun de AB y CD Si CD mide AB entonces es una medida comun puesto que CD se mide a si mismo Y es manifiesto que tambien es la mayor medida pues nada mayor a CD puede medir a CD Pero si CD no mide a AB entonces algun numero quedara de AB y CD el menor siendo continuamente restado del mayor y que medira al numero que le precede Porque una unidad no quedara pues si no es asi AB y CD seran primos uno del otro Prop VII 1 lo cual es lo contrario de lo que se supuso Por tanto algun numero queda que medira el numero que le precede Y sea CD midiendo BE dejando EA menor que si mismo y sea EA midiendo DF dejando FC menor que si mismo y sea FC medida de AE Entonces como FC mide AE y AE mide DF FC sera entonces medida de DF Y tambien se mide a si mismo Por tanto tambien medira todo CD Y CD mide a BE Entonces CF mide a BE y tambien mide a EA Asi mide a todo BA y tambien mide a CD Esto es CF mide tanto a AB y CD por lo que es una medida comun de AB y CD Afirmo que tambien es la mayor medida comun posible porque si no lo fuera entonces un numero mayor que CF mide a los numeros AB y CD sea este G Dado que G mide a CD y CD mide a BE G tambien mide a BE Ademas mide a todo BA por lo que mide tambien al residuo AE Y AE mide a DF por lo que G tambien mide a DF Mide tambien a todo DC por lo que mide tambien al residuo CF es decir el mayor mide al menor lo cual es imposible Por tanto ningun numero mayor a CF puede medir a los numeros AB y CD Entonces CF es la mayor medida comun de AB y CD lo cual se queria demostrar Euclides Elementos VII 2 En lenguaje moderno el algoritmo se describe como sigue Dados dos segmentos AB y CD con AB gt CD restamos CD de AB tantas veces como sea posible Si no hay residuo entonces CD es la maxima medida comun Si se obtiene un residuo EA este es menor que CD y podemos repetir el proceso restamos EA tantas veces como sea posible de CD Si al final no queda un residuo EA es la medida comun En caso contrario obtenemos un nuevo residuo FC menor a EA El proceso se repite hasta que en algun momento no se obtiene residuo Entonces el ultimo residuo obtenido es la mayor medida comun El hecho de que los segmentos son conmesurables es clave para asegurar que el proceso termina tarde o tempranoAlgoritmo de Euclides tradicional EditarAl dividir a displaystyle a entre b displaystyle b numeros enteros se obtiene un cociente q displaystyle q y un resto r displaystyle r Es posible demostrar que el maximo comun divisor de a displaystyle a y b displaystyle b es el mismo que el de b displaystyle b y r displaystyle r Sea c el maximo comun divisor de a displaystyle a y b displaystyle b como a b q r displaystyle a bq r y c displaystyle c divide a a displaystyle a y a b displaystyle b divide tambien a r displaystyle r Si existiera otro numero mayor que c displaystyle c que divide a b displaystyle b y a r displaystyle r tambien dividiria a a displaystyle a por lo que c displaystyle c no seria el mcd de a displaystyle a y b displaystyle b lo que contradice la hipotesis Este es el fundamento principal del algoritmo Tambien es importante tener en cuenta que el maximo comun divisor de cualquier numero a displaystyle a y es precisamente a displaystyle a Para fines practicos la notacion m c d a b displaystyle mathrm mcd a b significa maximo comun divisor de a displaystyle a y b displaystyle b Segun lo antes mencionado para calcular el maximo comun divisor de 2366 y 273 se puede proseguir de la siguiente manera Paso Operacion Significado1 2366 dividido entre 273 es 8 y sobran 182 m c d 2366 273 m c d 273 182 displaystyle mathrm mcd 2366 273 mathrm mcd 273 182 2 273 dividido entre 182 es 1 y sobran 91 m c d 273 182 m c d 182 91 displaystyle mathrm mcd 273 182 mathrm mcd 182 91 3 182 dividido entre 91 es 2 y sobra 0 m c d 182 91 m c d 91 0 displaystyle mathrm mcd 182 91 mathrm mcd 91 0 La secuencia de igualdades m c d 2366 273 m c d 273 182 m c d 182 91 m c d 91 0 displaystyle mathrm mcd 2366 273 mathrm mcd 273 182 mathrm mcd 182 91 mathrm mcd 91 0 implican que m c d 2366 273 m c d 91 0 displaystyle mathrm mcd 2366 273 mathrm mcd 91 0 Dado que m c d 91 0 91 displaystyle mathrm mcd 91 0 91 entonces se concluye que m c d 2366 273 91 displaystyle mathrm mcd 2366 273 91 Este mismo procedimiento se puede aplicar a cualesquiera dos numeros naturales En general si se desea encontrar el maximo comun divisor de dos numeros naturales a displaystyle a y b displaystyle b se siguen las siguientes reglas Si b 0 displaystyle b 0 entonces m c d a b a displaystyle mathrm mcd a b a y el algoritmo termina En otro caso m c d a b m c d b r displaystyle mathrm mcd a b mathrm mcd b r donde r displaystyle r es el resto de dividir a displaystyle a entre b displaystyle b Para calcular m c d b r displaystyle mathrm mcd b r se utilizan estas mismas reglasAsuma que llamamos a r 0 displaystyle a r 0 y b r 1 displaystyle b r 1 Aplicando estas reglas se obtiene la siguiente secuencia de operaciones Paso Operacion Significado1 r 0 displaystyle r 0 dividido entre r 1 displaystyle r 1 es q 1 displaystyle q 1 y sobran r 2 displaystyle r 2 m c d r 0 r 1 m c d r 1 r 2 displaystyle mathrm mcd r 0 r 1 mathrm mcd r 1 r 2 2 r 1 displaystyle r 1 dividido entre r 2 displaystyle r 2 es q 2 displaystyle q 2 y sobran r 3 displaystyle r 3 m c d r 1 r 2 m c d r 2 r 3 displaystyle mathrm mcd r 1 r 2 mathrm mcd r 2 r 3 3 r 2 displaystyle r 2 dividido entre r 3 displaystyle r 3 es q 3 displaystyle q 3 y sobran r 4 displaystyle r 4 m c d r 2 r 3 m c d r 3 r 4 displaystyle mathrm mcd r 2 r 3 mathrm mcd r 3 r 4 displaystyle vdots displaystyle vdots displaystyle vdots n displaystyle n r n 1 displaystyle r n 1 dividido entre r n displaystyle r n es q n displaystyle q n y sobran r n 1 displaystyle r n 1 m c d r n 1 r n m c d r n r n 1 displaystyle mathrm mcd r n 1 r n mathrm mcd r n r n 1 n 1 displaystyle n 1 r n displaystyle r n dividido entre r n 1 displaystyle r n 1 es q n 1 displaystyle q n 1 y sobra m c d r n r n 1 m c d r n 1 0 displaystyle mathrm mcd r n r n 1 mathrm mcd r n 1 0 Como la sucesion de residuos va disminuyendo al final un residuo tiene que ser cero y es en ese momento cuando el algoritmo termina El maximo comun divisor es precisamente r n 1 displaystyle r n 1 el ultimo residuo que no es cero Generalizacion Editar En realidad el algoritmo de Euclides funciona no solo para los numeros naturales sino para cualquier elemento en el que exista una division con residuo A este tipo de divisiones se les llama divisiones euclidianas y a los conjuntos donde se puede definir dicha division se les llama dominios euclideos Por ejemplo el conjunto de los numeros enteros y el de los polinomios con coeficientes racionales son dominios euclideos porque podemos definir una division con residuo vease Division polinomial De esta manera se puede calcular el maximo comun divisor de dos numeros enteros o de dos polinomios Por ejemplo para calcular el maximo comun divisor de los polinomios P x x 5 2 x 3 x displaystyle P x x 5 2x 3 x y Q x x 4 1 displaystyle Q x x 4 1 el algoritmo de Euclides sugiere la siguiente secuencia de operaciones Paso Operacion Significado1 x 5 2 x 3 x displaystyle x 5 2x 3 x dividido entre x 4 1 displaystyle x 4 1 es x displaystyle x y sobra 2 x 3 2 x displaystyle 2x 3 2x m c d x 5 2 x 3 x x 4 1 m c d x 4 1 2 x 3 2 x displaystyle mathrm mcd x 5 2x 3 x x 4 1 mathrm mcd x 4 1 2x 3 2x 2 x 4 1 displaystyle x 4 1 dividido entre 2 x 3 2 x displaystyle 2x 3 2x es 1 2 x displaystyle textstyle frac 1 2 x y sobra x 2 1 displaystyle x 2 1 m c d x 4 1 2 x 3 2 x m c d 2 x 3 2 x x 2 1 displaystyle mathrm mcd x 4 1 2x 3 2x mathrm mcd 2x 3 2x x 2 1 3 2 x 3 2 x displaystyle 2x 3 2x dividido entre x 2 1 displaystyle x 2 1 es 2 x displaystyle 2x y sobra 0 m c d 2 x 3 2 x x 2 1 m c d x 2 1 0 displaystyle mathrm mcd 2x 3 2x x 2 1 mathrm mcd x 2 1 0 De esta manera se concluye que su maximo comun divisor es x 2 1 displaystyle x 2 1 Descripcion formal Editar Se puede expresar este algoritmo de manera mas formal usando pseudocodigo En este caso la expresion x mod y displaystyle x bmod y significa el residuo de dividir x displaystyle x entre y displaystyle y vease Aritmetica modular Algoritmo 1 de EuclidesEntrada Valores a displaystyle a y b displaystyle b pertenecientes a un dominio euclideoSalida Un maximo comun divisor de a displaystyle a y b displaystyle b r 0 a displaystyle r 0 gets a r 1 b displaystyle r 1 gets b i 1 displaystyle i gets 1 Mientras r i 0 displaystyle r i neq 0 haga lo siguiente r i 1 r i 1 mod r i displaystyle r i 1 gets r i 1 bmod r i i i 1 displaystyle i gets i 1 El resultado es r i 1 displaystyle r i 1 Vale la pena notar que este algoritmo no es eficiente ser implementado directamente en una computadora ya que requeriria memorizar todos los valores de r i displaystyle r i Algoritmo de Euclides extendido EditarEl algoritmo de Euclides extendido permite ademas de encontrar un maximo comun divisor de dos numeros enteros a displaystyle a y b displaystyle b expresarlo como la minima combinacion lineal de esos numeros es decir encontrar numeros enteros s displaystyle s y t displaystyle t tales que m c d a b a s b t displaystyle mathrm mcd a b as bt Esto se generaliza tambien hacia cualquier dominio euclidiano Fundamentos Editar Existen varias maneras de explicar el algoritmo de Euclides extendido una de las mas comunes consiste en la siguiente Usar el algoritmo tradicional de Euclides En cada paso en lugar de a displaystyle a dividido entre b displaystyle b es q displaystyle q y de resto r displaystyle r se escribe la ecuacion a b q r displaystyle a bq r vease algoritmo de la division Se despeja el resto de cada ecuacion Se sustituye el resto de la ultima ecuacion en la penultima y la penultima en la antepenultima y asi sucesivamente hasta llegar a la primera ecuacion y en todo paso se expresa cada resto como combinacion lineal Sin embargo en aras de la comprension y memorizacion de este algoritmo es conveniente conocer la siguiente caracterizacion Para multiplicar dos matrices de tamano 2 2 displaystyle 2 times 2 se usa la siguiente formula vease Producto de matrices 1 e f g h a b c d e a f c e b f d g a h c g b h d displaystyle begin bmatrix e amp f g amp h end bmatrix times begin bmatrix a amp b c amp d end bmatrix begin bmatrix ea fc amp eb fd ga hc amp gb hd end bmatrix Supongase que se utiliza el algoritmo de Euclides tradicional para calcular los valores q i displaystyle q i y r i displaystyle r i que ahi se describen Por cada valor q i displaystyle q i calculado se puede formar la matriz Q i 0 1 1 q i displaystyle textstyle Q i begin bmatrix 0 amp 1 1 amp q i end bmatrix Usando la ecuacion 1 de manera repetida se puede calcular el producto de las primeras i displaystyle i matrices de este tipo s i t i s i 1 t i 1 0 1 1 q i 0 1 1 q i 1 0 1 1 q 1 displaystyle begin bmatrix s i amp t i s i 1 amp t i 1 end bmatrix begin bmatrix 0 amp 1 1 amp q i end bmatrix times begin bmatrix 0 amp 1 1 amp q i 1 end bmatrix times cdots times begin bmatrix 0 amp 1 1 amp q 1 end bmatrix Resulta ser que los valores s i displaystyle s i y t i displaystyle t i tienen la propiedad de que r i a s i b t i displaystyle r i as i bt i es decir expresan a r i displaystyle r i como una combinacion lineal de a displaystyle a y b displaystyle b Particularmente como m c d a b r n 1 displaystyle mathrm mcd a b r n 1 entonces se tiene m c d a b a s n 1 b t n 1 displaystyle mathrm mcd a b as n 1 bt n 1 lo cual es la solucion del problema Esta propiedad no deberia ser sorprendente pues esta multiplicacion de matrices equivale al metodo antes descrito donde se substituye cada ecuacion en la anterior Es importante calcular Q i Q 3 Q 2 Q 1 displaystyle Q i times cdots times Q 3 times Q 2 times Q 1 en ese mismo orden La matriz Q 1 displaystyle Q 1 aparece en el extremo derecho y la matriz Q i displaystyle Q i en el izquierdo Regresando al primer ejemplo la sucesion de cocientes es q 1 8 displaystyle q 1 8 q 2 1 displaystyle q 2 1 y q 3 2 displaystyle q 3 2 Entonces se puede calcular 1 9 3 26 0 1 1 2 0 1 1 1 0 1 1 8 displaystyle begin bmatrix 1 amp 9 3 amp 26 end bmatrix begin bmatrix 0 amp 1 1 amp 2 end bmatrix times begin bmatrix 0 amp 1 1 amp 1 end bmatrix times begin bmatrix 0 amp 1 1 amp 8 end bmatrix Utilizando el primer renglon de esta matriz se puede leer que 91 2366 1 273 9 displaystyle 91 2366 1 273 9 es decir se ha encontrado la manera de expresar al maximo comun divisor de 2366 y 273 como una combinacion lineal Descripcion formal Editar Para expresar el algoritmo de Euclides extendido es conveniente notar la manera en que se calculan los valores s i displaystyle s i y t i displaystyle t i con la multiplicacion de matrices s i t i s i 1 t i 1 s i t i s i 1 q i s i t i 1 q i t i 0 1 1 q i s i 1 t i 1 s i t i displaystyle begin bmatrix s i amp t i s i 1 amp t i 1 end bmatrix begin bmatrix s i amp t i s i 1 q i s i amp t i 1 q i t i end bmatrix begin bmatrix 0 amp 1 1 amp q i end bmatrix times begin bmatrix s i 1 amp t i 1 s i amp t i end bmatrix De esta manera s i 1 s i 1 q i s i displaystyle s i 1 s i 1 q i s i y ademas t i 1 t i 1 q i t i displaystyle t i 1 t i 1 q i t i Por lo tanto el algoritmo en pseudocodigo se puede expresar como sigue Algoritmo 2 de Euclides extendidoEntrada Valores a displaystyle a y b displaystyle b pertenecientes a un dominio euclideoSalida Un maximo comun divisor de a displaystyle a y b displaystyle b y valores s displaystyle s y t displaystyle t tales que m c d a b a s b t displaystyle mathrm mcd a b as bt r 0 a r 1 b s 0 1 t 0 0 s 1 0 t 1 1 displaystyle r 0 gets a r 1 gets b s 0 gets 1 t 0 gets 0 s 1 gets 0 t 1 gets 1 i 1 displaystyle i gets 1 Mientras r i 0 displaystyle r i neq 0 haga lo siguiente Divida r i 1 displaystyle r i 1 entre r i displaystyle r i para obtener el cociente q i displaystyle q i y el residuo r i 1 displaystyle r i 1 s i 1 s i 1 q i s i displaystyle s i 1 gets s i 1 q i s i t i 1 t i 1 q i t i displaystyle t i 1 gets t i 1 q i t i i i 1 displaystyle i gets i 1 El resultado es r i 1 displaystyle r i 1 es un maximo comun divisor de a displaystyle a y b displaystyle b y se expresa r i 1 a s i 1 b t i 1 displaystyle r i 1 as i 1 bt i 1 Aplicaciones EditarSimplificar fracciones Editar Al momento de hacer calculos con fracciones es de gran importancia saber como simplificarlas Por ejemplo la fraccion 65 91 displaystyle textstyle frac 65 91 es equivalente con 5 7 displaystyle textstyle frac 5 7 vease Numero racional De manera mas general a b c a c b displaystyle textstyle frac a b frac ca cb siempre que c 0 displaystyle c neq 0 Para reducir una fraccion cualquiera a b displaystyle textstyle frac a b solo se necesita dividir a displaystyle a y b displaystyle b entre su maximo comun divisor Por ejemplo si se desea reducir 166 249 displaystyle textstyle frac 166 249 primero se usa el algoritmo de Euclides para encontrar m c d 166 249 83 displaystyle mathrm mcd 166 249 83 Se hacen las divisiones 166 83 2 displaystyle textstyle 166 div 83 2 y 249 83 3 displaystyle textstyle 249 div 83 3 Luego entonces se concluye que 166 249 2 3 displaystyle textstyle frac 166 249 frac 2 3 Fracciones continuas Editar La sucesion de divisiones que se efectuan al seguir el algoritmo de Euclides puede ser utilizada para expresar una fraccion cualquiera a b displaystyle textstyle frac a b como fraccion continua Esto se debe a que si a b q r displaystyle a bq r y r 0 displaystyle r neq 0 entonces 3 a b q 1 b r displaystyle frac a b q frac 1 frac b r Por ejemplo para encontrar el maximo comun divisor de 93164 displaystyle 93164 y 5826 displaystyle 5826 el algoritmo genera la siguiente secuencia de divisiones Paso Operacion Significado1 93164 dividido entre 5826 es 15 y sobran 5774 93164 5826 15 5774 displaystyle 93164 5826 times 15 5774 2 5826 dividido entre 5774 es 1 y sobran 52 5826 5774 1 52 displaystyle 5826 5774 times 1 52 3 5774 dividido entre 52 es 111 y sobran 2 5774 52 111 2 displaystyle 5774 52 times 111 2 4 52 dividido entre 2 es 26 y sobra 0 52 2 26 0 displaystyle 52 2 times 26 0 Todas estas ecuaciones las podemos hacer parecidas a la ecuacion 3 3 93164 5826 15 1 5826 5774 displaystyle textstyle frac 93164 5826 15 frac 1 frac 5826 5774 5826 5774 1 1 5774 52 displaystyle textstyle frac 5826 5774 1 frac 1 frac 5774 52 5774 52 111 1 52 2 displaystyle textstyle frac 5774 52 111 frac 1 frac 52 2 52 2 26 displaystyle textstyle frac 52 2 26 Si se sustituye la segunda ecuacion en la primera se obtiene 93164 5826 15 1 1 1 5774 52 displaystyle frac 93164 5826 15 frac 1 1 frac 1 frac 5774 52 Si se repite este proceso de substitucion entonces se obtiene la expresion deseada 93164 5826 15 1 1 1 111 1 26 displaystyle frac 93164 5826 15 frac 1 1 frac 1 111 frac 1 26 De manera mas general la fraccion continua encontrada con este algoritmo siempre es de la forma a b q 1 1 q 2 1 q 3 1 q n 1 1 q n displaystyle frac a b q 1 frac 1 q 2 frac 1 q 3 frac 1 ddots q n 1 frac 1 q n Inversos modulo m Editar Articulo principal Inverso multiplicativo aritmetica modular Decimos que dos numeros enteros son congruentes modulo m displaystyle m aunque tambien se puede generalizar para cualquier otro dominio euclideo si al dividirlos entre m displaystyle m obtenemos el mismo residuo vease Congruencia Por ejemplo 7 es congruente con 12 modulo 5 porque al dividir 7 entre 5 y 12 entre 5 en ambos casos obtenemos el mismo residuo que es 2 Cuando a displaystyle a es congruente con b displaystyle b modulo m displaystyle m se escribe a b mod m displaystyle a equiv b pmod m en el ejemplo anterior se tiene 7 12 mod 5 displaystyle 7 equiv 12 pmod 5 Supongase que se conocen los valores de a displaystyle a b displaystyle b y m displaystyle m pero que se desconoce el valor x displaystyle x en la siguiente congruencia 2 a x b mod m displaystyle ax equiv b pmod m Basta encontrar un valor a 1 displaystyle a 1 que satisfaga a 1 a 1 mod m displaystyle a 1 a equiv 1 pmod m pues de esta manera al multiplicar la ecuacion 2 por a 1 displaystyle a 1 se tendra la solucion deseada x a 1 b mod m displaystyle x equiv a 1 b pmod m Al elemento a 1 displaystyle a 1 se le llama inverso modulo m displaystyle m de a displaystyle a Desafortunadamente este valor no siempre existe Por ejemplo con a 4 displaystyle a 4 y m 6 displaystyle m 6 no existe ningun numero entero a 1 displaystyle a 1 tal que a 1 4 1 mod 6 displaystyle a 1 4 equiv 1 pmod 6 De hecho este valor existe si y solo si m c d a m 1 displaystyle mathrm mcd a m 1 la existencia de soluciones depende de la condicion m c d a m b displaystyle mathrm mcd a m b mientras que la unicidad depende de que el m c d a m 1 displaystyle mathrm mcd a m 1 Mas aun si al usar el algoritmo de Euclides extendido ahora con b m displaystyle b m se obtiene 1 a s m t displaystyle 1 as mt entonces el valor s displaystyle s es el inverso modulo m displaystyle m de a displaystyle a Por ejemplo se desea resolver la ecuacion 5 x 2 mod 9 displaystyle 5x equiv 2 pmod 9 Entonces con el algoritmo de Euclides extendido se obtiene que m c d 5 9 1 5 2 9 1 displaystyle mathrm mcd 5 9 1 5 2 9 1 Como m c d 5 9 1 displaystyle mathrm mcd 5 9 1 entonces 5 tiene un inverso modulo 9 displaystyle 9 Mas aun como 1 5 2 9 1 displaystyle 1 5 2 9 1 entonces ese inverso es 2 Entonces x 2 2 mod 9 displaystyle x equiv 2 2 pmod 9 Es decir que el valor de x displaystyle x es 4 displaystyle 4 Complejidad del algoritmo Editar Grafica del numero de divisiones efectuadas en el algoritmo de Euclides El rojo indica pocas operaciones mientras que los colores eventualmente mas azules representan mayor numero de operaciones El teorema de Lame afirma que el caso peor para este algoritmo es cuando se le pide calcular el maximo comun divisor de dos numeros consecutivos de la sucesion de Fibonacci Por ejemplo si se desea calcular el maximo comun divisor de f 10 55 displaystyle f 10 55 y f 11 89 displaystyle f 11 89 se obtiene la siguiente secuencia de operaciones Paso Operacion Significado1 89 dividido entre 55 es 1 y sobran 34 m c d 89 55 m c d 55 34 displaystyle mathrm mcd 89 55 mathrm mcd 55 34 2 55 dividido entre 34 es 1 y sobran 21 m c d 55 34 m c d 34 21 displaystyle mathrm mcd 55 34 mathrm mcd 34 21 3 34 dividido entre 21 es 1 y sobran 13 m c d 34 21 m c d 21 13 displaystyle mathrm mcd 34 21 mathrm mcd 21 13 4 21 dividido entre 13 es 1 y sobran 8 m c d 21 13 m c d 13 8 displaystyle mathrm mcd 21 13 mathrm mcd 13 8 5 13 dividido entre 8 es 1 y sobran 5 m c d 13 8 m c d 8 5 displaystyle mathrm mcd 13 8 mathrm mcd 8 5 6 8 dividido entre 5 es 1 y sobran 3 m c d 8 5 m c d 5 3 displaystyle mathrm mcd 8 5 mathrm mcd 5 3 7 5 dividido entre 3 es 1 y sobran 2 m c d 5 3 m c d 3 2 displaystyle mathrm mcd 5 3 mathrm mcd 3 2 8 3 dividido entre 2 es 1 y sobran 1 m c d 3 2 m c d 2 1 displaystyle mathrm mcd 3 2 mathrm mcd 2 1 9 2 dividido entre 1 es 2 y sobra 0 m c d 2 1 m c d 1 0 displaystyle mathrm mcd 2 1 mathrm mcd 1 0 En este ejemplo se observa que con estos dos numeros de dos digitos decimales se necesita hacer 9 divisiones En general el numero de divisiones efectuadas por el algoritmo nunca supera 5 veces el numero de digitos que tienen estos numeros En terminos de complejidad computacional esto significa que se requieren O log n displaystyle O log n divisiones para calcular el maximo comun divisor de n displaystyle n y m displaystyle m donde n gt m displaystyle n gt m El numero promedio de divisiones efectuadas por el algoritmo se estuvo investigando desde 1968 pero solo hasta apenas el ano 2002 Brigitte Vallee demostro que si los dos numeros se pueden representar con n displaystyle n bits entonces el numero promedio de divisiones necesarias es p 2 6 n displaystyle textstyle frac pi 2 6 n Sin embargo no basta con saber el numero de divisiones Hay que recordar que el algoritmo de Euclides funciona tanto para polinomios como para numeros enteros y en general cualquier dominio Euclideo En cada caso la complejidad del algoritmo depende del numero de divisiones efectuadas y del costo de cada division En el caso de los polinomios el numero de divisiones es O log n displaystyle O log n donde n displaystyle n es el grado de los polinomios Implementacion en pseudocodigo EditarEn general los algoritmos 1 y 2 no son muy apropiados para implementarse directamente en un lenguaje de programacion especialmente porque consumen mucha memoria Si no se necesitan los valores intermedios y solo se desea calcular el maximo comun divisor de dos numeros enteros conviene usar estas variantes Algoritmo de Euclides tradicional implementado de manera recurrenteFuncion m c d a b displaystyle mathrm mcd a b Si b 0 displaystyle b 0 entonces El resultado es a displaystyle a dd En otro caso El resultado es m c d b a mod b displaystyle mathrm mcd b a bmod b dd Algoritmo de Euclides tradicional implementado de manera iterativaFuncion m c d a b displaystyle mathrm mcd a b Mientras b 0 displaystyle b neq 0 haga lo siguiente a b b a mod b displaystyle a b gets b a bmod b dd El resultado es a displaystyle a Algoritmo de Euclides extendido implementado de manera recurrenteFuncion E u c l i d e s a b displaystyle rm Euclides a b Si b 0 displaystyle b 0 entonces El resultado es a 1 0 displaystyle a 1 0 dd En otro caso d s t E u c l i d e s b a mod b displaystyle d s t gets rm Euclides b a bmod b El resultado es d t s a b t displaystyle d t s a div b t dd Algoritmo de Euclides extendido implementado de manera iterativaFuncion E u c l i d e s a b displaystyle rm Euclides a b s t s t 1 0 0 1 displaystyle s t s prime t prime gets 1 0 0 1 Mientras b 0 displaystyle b neq 0 haga lo siguiente Divida a displaystyle a entre b displaystyle b para obtener un cociente q displaystyle q y un residuo r displaystyle r a s t b s t b s t r s s q t t q displaystyle a s t b s prime t prime gets b s prime t prime r s s prime q t t prime q dd El resultado es a s t displaystyle a s t Algoritmo de Euclides extendido implementado de manera iterativa con matricesFuncion E u c l i d e s a b displaystyle rm Euclides a b Q 1 0 0 1 displaystyle Q gets begin pmatrix 1 amp 0 0 amp 1 end pmatrix Mientras b 0 displaystyle b neq 0 haga lo siguiente Divida a displaystyle a entre b displaystyle b para obtener un cociente q displaystyle q y un residuo r displaystyle r Q 0 1 1 q Q displaystyle Q gets begin pmatrix 0 amp 1 1 amp q end pmatrix times Q a b b r displaystyle a b gets b r dd El resultado es a Q 11 Q 12 displaystyle a Q 11 Q 12 Acerca de la notacion empleada x y displaystyle x gets y significa asigne a la variable x displaystyle x el valor actual de y displaystyle y En lenguajes como C Java C Python y Visual Basic esto significa simplemente x y En otros lenguajes como Pascal se traduce en a b en Maxima es a b en R S y Ocaml es x lt y e inclusive se utiliza la flecha x y como el caso de APL x y z a b c displaystyle x y z gets a b c significa que primero se evaluan los valores a b c displaystyle a b c y luego se asigna x a y b z c displaystyle x gets a y gets b z gets c etc En lenguajes como Python Ruby o Maxima esta instruccion tiene una estructura muy similar como por ejemplo en Python x y z a b c En otros lenguajes es necesario el uso de variables auxiliares como por ejemplo en lenguaje C aux1 b aux2 c x a y aux1 z aux2 a b displaystyle a div b significa el cociente de dividir a displaystyle a entre b displaystyle b A esta operacion se le conoce tambien como la division truncada porque trunca la parte fraccionaria del numero En muchos lenguajes de programacion esto se implementa simplemente como a b Otras maneras son a b Visual Basic a div b Pascal o bien a b Python 3 a mod b displaystyle a bmod b significa el residuo de dividir a displaystyle a entre b displaystyle b A esta operacion se le conoce simplemente como modulo En muchos lenguajes de programacion se implementa como a b mientras que en otros es a mod b Visual Basic o Pascal o bien a rem b Ada Vease tambien EditarImplementaciones en lenguajes en la parte de discusionReferencias EditarBibliografia Editarvon zur Gathen Joachim Gerhard Jurgen 2003 The Euclidean Algorithm Modern Computer Algebra Cambridge University Press ISBN 0 521 82646 2 Shoup Victor 2008 Euclid s algorithm A Computational Introduction to Number Theory and Algebra Cambridge University Press ISBN 978 0 521 85154 1 Johnsonbaugh Richard 2005 Introduccion a la teoria de numeros Matematicas Discretas Mexico PEARSON EDUCACIoN ISBN 970 26 0637 3 Ralph P Grimaldi 1998 Propiedades de los numeros enteros Induccion matematica Matematicas Discreta y Combinatoria Mexico Addison Wesley Longman de Mexico ISBN 968 444 324 2 Lipschutz Seymour Lipson Marc 2009 Propiedades de los enteros Matematicas Discretas McGraw Hill ISBN 978 970 10 7236 3 Brassard Gilles Bratley Paul 1997 Analisis de algoritmos Fundamentos de Algoritmia Madrid PRENTICE HALL ISBN 84 89660 00 X Vallee Brigitte 2002 Dynamical Analysis of a displaystyle alpha Euclidean Algorithms Journal of Algorithms 44 1 ISSN 0196 6774 pp 246 285 Archivado desde el original el 2 de octubre de 2006 Cormen Thomas Leiserson Charles Rivest Ronald Stein Clifford 2009 Number Theoretic Algorithms Introduction to Algorithms The MIT Press ISBN 978 0 262 53305 8 Barrera Mora Fernando 2005 Definiciones y resultados generales Introduccion a la Teoria de Grupos Publicaciones Electronicas de la Sociedad Matematica Mexicana p 16 17 ISBN 968 9161 02 4 Consultado el 2 de julio de 2017 Cardenas Humberto Lluis Emilio Raggi Francisco Tomas Francisco 2004 Divisibilidad Algebra Superior Mexico Trillas ISBN 968 24 3783 0 Perez Segui Maria Luisa 2006 Divisibilidad Teoria de Numeros Instituto de Matematicas UNAM ISBN 970 32 1170 0 Sanchez Velazquez Jesus 1998 Algoritmos para numeros grandes Introduccion al analisis de algoritmos Mexico Trillas ISBN 968 24 4341 5 Baldor Aurelio 2008 Maximo comun divisor Algebra Mexico Grupo Editorial Patria ISBN 978 970 817 000 0 Enlaces externos Editar Wikilibros alberga un libro o manual sobre implementaciones del algoritmo de Euclides Divisibilidad El algoritmo de Euclides Algoritmo de Euclides Weisstein Eric W Euclidean Algorithm En Weisstein Eric W ed MathWorld en ingles Wolfram Research Explicacion dinamica del maximo comun divisor en este video de YouTube 1 En gaussianos 2 se pueden ver explicaciones y ejemplos un poco mas avanzados de este algoritmo Datos Q230848 Multimedia Euclidean algorithmObtenido de https es wikipedia org w index php title Algoritmo de Euclides amp oldid 136733845, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos