Algoritmu d'Euclides

El **algoritmu d'Euclides** ye un métodu antiguo y eficiente pa calcular el máximu común divisor (**MCD**). Foi orixinalmente descritu por Euclides na so obra *[[Elementos d'Euclides|Elementos]]*. El **algoritmu d'Euclides estendíu** ye un llixeru cambéu que dexa amás espresar al máximu común divisor como una combinación llinial. Esti algoritmu tien aplicaciones en diverses árees como álxebra, teoría de númberos y ciencies de la computación, ente otres. Con unos llixeros cambeos suel ser utilizáu n'ordenadores electrónicos por cuenta de la so gran eficiencia.

## Algoritmu orixinal de Euclides

Na concepción griega de la matemática, los númberos entendíense como magnitúes xeométriques. Una tema recurrente na xeometría griega ye'l de la conmensurabilidad de dos segmentos: dos segmentos (númberos) *AB* y *CD* son conmensurables cuando esiste un tercer segmentu *PQ* que cabo esautamente un númberu enteru de vegaes nos primeros dos; esto ye, *PQ* «mide» (mensura: midida) a los segmentos *AB* y *CD*.

Non cualquier par de segmentos ye conmensurable, como atoparon los pitagóricos cuando establecen que'l llau y la diagonal d'un cuadráu nun son conmensurables, pero nel casu de dos segmentos conmensurables deseyar topar la mayor midida común posible.

Euclides describe na proposición VI I.2 de los sos Elementos un métodu que dexa topar la mayor midida común posible de dos númberos (segmentos) que nun sían primos ente sigo, anque d'alcuerdu a la dómina tal métodu esplicar en términos xeométricos, lo que s'ilustra na siguiente trescripción.




En llinguaxe modernu, l'algoritmu descríbese como sigue:
# Daos dos segmentos *AB* y *CD* (con *AB>CD*), restamos *CD* de *AB* tantes vegaes como seya posible. Si nun hai residuu, entós *CD* ye la máxima midida común.
# Si llógrase un residuu *EA*, ésti ye menor que *CD* y podemos repitir el procesu: restamos *EA* tantes vegaes como seya posible de *CD*. Si a la fin nun queda una residuu, *EA* ye la midida común. En casu contrariu llogramos una nueva residuu *FC* menor a EA.
# El procesu repitir hasta qu'en dalgún momentu nun se llogra residuu. Entós la última residuu llograda ye la mayor midida común.

El fechu de que los segmentos son conmesurables ye clave p'asegurar que'l procesu termina tarde o aína

## Algoritmu d'Euclides tradicional
Al estremar a ente b (númberos enteros), llógrase un cociente q y un residuu r. Ye posible demostrar que'l máximu común divisor de a y b ye'l mesmu que'l de b y r(Sía c el máximu común divisor de a y b,.Como a=bq+r y c estrema a a y a b estrema tamién a r. Si esistiera otru númberu mayor que c qu'estrema a b y a r, tamién estremaría a a , polo que c nun sería'l mcd de a y b, lo que contradiz la hipótesis). Ésti ye'l fundamentu principal del algoritmu. Tamién ye importante tener en cuenta que'l máximu común divisor de cualquier númberu a y 0 ye precisamente a. Pa fines práuticos, la notación \mathrm{mcd}(a,b) significa *máximu común divisor de <math>a</math> y <math>b</math>*.

Según lo antes mentáu, pa calcular el máximu común divisor de 2366 y 273 puede prosiguir de la siguiente manera:

La secuencia d'igualdaes \mathrm{mcd}(2366,273)=\mathrm{mcd}(273,182)=\mathrm{mcd}(182,91)=\mathrm{mcd}(91,0) impliquen que \mathrm{mcd}(2366,273)=\mathrm{mcd}(91,0). Puesto que \mathrm{mcd}(91,0)=91, entós conclúyese que \mathrm{mcd}(2366,273)=91. Este mesmu procedimientu puede aplicase a cualesquier dos númberos naturales. Polo xeneral, si deseyar atopar el máximu común divisor de dos númberos naturales a y b, síguense les siguientes regles:
# Si b=0 entós \mathrm{mcd}(a,b)=a y l'algoritmu termina #
N'otru casu, \mathrm{mcd}(a,b)=\mathrm{mcd}(b,r) onde r ye'l restu d'estremar a ente b. Pa calcular \mathrm{mcd}(b,r) utilícense estes mesmes regles

Asuma que llamamos a=r_0 y b=r_1. Aplicando estes regles llógrase la siguiente secuencia d'operaciones:

Como la socesión de residuos va menguando, a la fin una residuu tien que ser cero y ye nesi momentu cuando l'algoritmu termina. El máximu común divisor ye precisamente r_{n+1} (la última residuu que nun ye cero).

### Xeneralización
En realidá l'algoritmu d'Euclides funciona non yá pa los númberos naturales, sinón pa cualesquier elementos nos qu'esista una "división con residuu". A esti tipu de divisiones llámase-yos divisiones euclidianes y a los conxuntos onde puede definise dicha división llámase-yos dominios euclídeos. Por casu, el conxuntu de los númberos enteros y el de los polinomios con coeficientes racionales son dominios euclídeos porque podemos definir una división con residuu (vease División polinomial). D'esta manera, puede calculase el máximu común divisor de dos númberos enteros o de dos polinomios.

Por casu, pa calcular el máximu común divisor de los polinomios P(x)=x^5+2x^3+x y Q(x)=x^4-1 l'algoritmu d'Euclides suxer la siguiente secuencia d'operaciones:

D'esta manera conclúyese que'l so máximu común divisor ye -x^2-1.

### Descripción formal
Puede espresase esti algoritmu de manera más formal usando pseudocódigo. Nesti casu la espresión "x \; \bmod \; y" significa "la residuu d'estremar x ente y" (vease Aritmética modular).

Vale la pena notar qu'esti algoritmu nun ye eficiente ser implementáu direutamente nun ordenador, yá que riquiría memorizar tolos valores de r_i.

## Algoritmu d'Euclides estendíu
L'algoritmu d'Euclides estendíu dexa, amás d'atopar un máximu común divisor de dos númberos enteros a y b, espresalo como la mínima combinación llinial d'esos númberos, esto ye, atopar númberos enteros s y t tales que \mathrm{mcd}(a,b)=a s+b t. Esto xeneralízase tamién escontra cualquier dominiu euclideano.

### Fundamentos
Esisten delles maneres d'esplicar l'algoritmu d'Euclides estendíu, una de les más comunes consiste na siguiente:
# Usar l'algoritmu tradicional de Euclides. En cada pasu, en llugar de "a estremáu ente b ye q y de restu r" escríbese la ecuación a=b q+r (vease algoritmu de la división).
# Esténase'l restu de cada ecuación.
# Sustitúyese'l restu de la última ecuación na penúltima, y la penúltima na antepenúltima y asina socesivamente hasta llegar a la primer ecuación, y en tou pasu espresa cada restu como combinación llinial.

Sicasí, n'ares de la comprensión y memorización d'esti algoritmu, ye conveniente conocer la siguiente carauterización.
Pa multiplicar dos matrices de tamañu 2\times 2 úsase la siguiente fórmula (vease Productu de matrices):

Supóngase que s'utiliza l'algoritmu d'Euclides tradicional pa calcular los valores q_i y r_i qu'ende se describen. Per cada valor q_i calculáu puede formase la matriz \textstyle Q_i=\begin{bmatrix}0&1\\1&-q_i\end{bmatrix}. Usando la ecuación  de manera repitida puede calculase el productu de les primeres i matrices d'esti tipu:

Resulta ser que los valores s_i y t_i tienen la propiedá de que r_i=a s_i+b t_i, esto ye, espresen a r_i como una combinación llinial de a y b. Particularmente, como \mathrm{mcd}(a,b)=r_{n+1} entós tiense \mathrm{mcd}(a,b)=a s_{n+1}+b t_{n+1}, lo cual ye la solución del problema. Esta propiedá nun tendría de ser sorprendente, pos esta multiplicación de matrices equival al métodu antes descritu onde se substituye cada ecuación na anterior. Ye importante calcular Q_i\times\cdots\times Q_3\times Q_2\times Q_1 nesi mesmu orde. La matriz Q_1 apaez nel estremu derechu y la matriz Q_i nel esquierdu.

Tornando al primer exemplu, la socesión de cocientes ye q_1=8, q_2=1 y q_3=2. Entós puede calculase

Utilizando'l primera renglón d'esta matriz puede lleese que 91=2366(-1)+273(9), esto ye, atopóse la manera d'espresar al máximu común divisor de 2366 y 273 como una combinación llinial.

### Descripción formal
Pa espresar l'algoritmu d'Euclides estendíu ye conveniente notar la manera en que se calculen los valores s_i y t_i cola multiplicación de matrices:

D'esta manera s_{i+1} = s_{i-1}-q_is_i y amás t_{i+1} = t_{i-1}-q_it_i. Polo tanto l'algoritmu en pseudocódigo puede espresase como sigue:

## Aplicaciones

### Simplificar fracciones
Al momentu de faer cálculos con fracciones, ye de gran importancia saber cómo simplificales. Por casu, la fracción \textstyle\frac{65}{91} ye equivalente con \textstyle\frac 5 7 (vease Númberu racional). De manera más xeneral, \textstyle\frac ab=\frac {ca}{cb} siempres que c\ne0. P'amenorgar una fracción cualesquier \textstyle\frac a b, namái se precisa estremar a y b ente'l so máximu común divisor.

Por casu, si deseyar amenorgar \textstyle\frac{166}{249}, primero úsase l'algoritmu d'Euclides p'atopar \mathrm{mcd}(166,249)=83. Fáense les divisiones \textstyle 166\div 83 = 2 y \textstyle 249\div 83 = 3. Depués entós conclúyese que \textstyle\frac{166}{249}=\frac 2 3.

### Fracciones continues
La socesión de divisiones que s'efectúen al siguir algoritmu d'Euclides puede ser utilizada pa espresar una fracción cualesquier \textstyle\frac a b como fracción continua. Esto debe a que si a = bq + r y r\neq 0, entós 

Por casu, p'atopar el máximu común divisor de 93164 y 5826 l'algoritmu xenera la siguiente secuencia de divisiones:

Toes estes ecuaciones podemos facer asemeyaes a la ecuación :
# \textstyle\frac{93164}{5826}=15+ \frac 1 {\frac{5826}{5774}}
# \textstyle\frac{5826}{5774}=1+ \frac 1 {\frac{5774}{52}}
# \textstyle\frac{5774}{52}=111+ \frac 1 {\frac{52}{2}}
# \textstyle\frac{52}{2}=26

Si sustitúi la segunda ecuación na primera, llógrase }}}

Si repite esti procesu de sustitución entós llógrase la espresión deseyada:
}}}

De manera más xeneral, la fracción continua atopada con esti algoritmu siempres ye de formar
}}}}

### Inversos módulu ''m''

Dicimos que dos númberos enteros son *congruentes módulu <math>m</math>* (anque tamién puede xeneralizase pa cualesquier otru dominiu euclídeo) si al estremalos ente m llogramos la mesma residuu (vease Congruencia). Por casu, 7 ye congruente con 12 módulu 5 porque al estremar 7 ente 5 y 12 ente 5, en dambos casos llogramos la mesma residuu (que ye 2). Cuando a ye congruente con b módulu m escríbese a\equiv b\pmod m, nel exemplu anterior tiense 7\equiv 12\pmod 5. Supóngase que se conocen los valores de a, b y m, pero que se desconoz el valor x na siguiente congruencia:

Basta atopar un valor a^{-1} que satisfaiga: a^{-1} a\equiv 1\pmod m, pos d'esta manera al multiplicar la ecuación  por a^{-1} va tenese la solución deseyada:

Al elementu a^{-1} llámase-y "inversu módulu m" de a. Desafortunadamente esti valor non siempres esiste. Por casu, con a=4 y m=6 nun esiste nengún númberu enteru a^{-1} tal que a^{-1} 4\equiv 1\pmod 6. De fechu esti valor esiste si y namái si \mathrm{mcd}(a,m)=1 (la esistencia de soluciones depende de la condición \mathrm{mcd}(a,m)|b , ente que la unicidá depende de que'l \mathrm{mcd}(a,m)=1). Entá más, si al usar l'algoritmu d'Euclides estendíu (agora con b=m) llógrase 1=as+mt, entós el valor s ye l'inversu módulu m de a. 
Por casu, deseyar resolver la ecuación

Entós col algoritmu d'Euclides estendíu llógrase que \mathrm{mcd}(5,9)=1=5(2)+9(-1). Como \mathrm{mcd}(5,9)=1 entós 5 tien un inversu módulu 9. Entá más, como 1=5(2)+9(-1), entós esi inversu ye 2. Entós

Ye dicir que'l valor de x ye 4.

## Complexidá del algoritmu

El teorema de Lamé afirma que'l casu peor pa esti algoritmu ye cuando se-y pide calcular el máximu común divisor de dos númberos consecutivos de la socesión de Fibonacci. Por casu, si deseyar calcular el máximu común divisor de f_{10}=55 y f_{11}=89 llógrase la siguiente secuencia d'operaciones:

Nesti exemplu reparar que con estos dos númberos de dos díxitos decimales, precísase faer 9 divisiones. Polo xeneral, el númberu de divisiones efectuaes pol algoritmu nunca supera 5 vegaes el númberu de díxitos que tienen estos númberos. En términos de complexidá computacional, esto significa que se riquir  O(\log n) divisiones pa calcular el máximu común divisor de n y m onde n>m.

El númberu permediu de divisiones efectuaes pol algoritmu tuvo investigándose dende 1968, pero namái hasta apenes l'añu 2002, Brigitte Vallée demostró que si los dos númberos pueden representase con n bits, entós el númberu permediu de divisiones necesaries ye \textstyle{\frac{\pi^2}{6}n}.

Sicasí, nun basta con saber el númberu de divisiones. Hai que recordar que l'algoritmu d'Euclides funciona tantu pa polinomios como pa númberos enteros, y polo xeneral, cualquier dominiu Euclídeo. En cada casu, la complexidá del algoritmu depende del númberu de divisiones efectuaes y del costu de cada división. Nel casu de los polinomios, el númberu de divisiones ye O(\log n) onde n ye'l grau de los polinomios.

## Implementación en pseudocódigo
Polo xeneral, los algoritmos  y  nun son bien apoderaos pa implementase direutamente nun llinguaxe de programación, especialmente porque peracaben muncha memoria. Si nun se precisen los valores entemedios, y namái se desea calcular el máximu común divisor de dos númberos enteros, convién usar estes variantes:

Alrodiu de la notación emplegada:
* x\gets y significa "asigne a la variable x el valor actual de y". En llinguaxes como C, Java, C#, Python y Visual Basic esto significa a cencielles `x = y`. N'otros llinguaxes como Pascal traducir en `a := b`, en Maxima ye `a : b`, en R, S y Ocaml ye `x <- y`, y inclusive utilízase la flecha `x ← y` como'l casu d'APL.
* (x,y,z)\gets(a,b,c) significa que primero s'evalúen los valores a,b,c y depués asígnase x\gets a,y\gets b,z\gets c, etc. En llinguaxes como Python, Ruby o Maxima esta instrucción tien una estructura bien similar, como por casu en Python: `(x,y,z) = (a,b,c)`. N'otros llinguaxes ye necesariu l'usu de variables auxiliares, como por casu en llinguaxe C: `aux1 = b; aux2 = c; x = a; y = aux1; z = aux2;`.
* a\div b significa "el cociente d'estremar a ente b". A esta operación conózse-y tamién como la *división truncada* porque ataya la parte fraccionaria del númberu. En munchos llinguaxes de programación esto impleméntase a cencielles como `a/b`. Otres maneres son `a\b` (Visual Basic) , `a div b` (Pascal) o bien `a//b` (Python 3).
* a\; \bmod \; b significa "la residuu d'estremar a ente b". A esta operación conózse-y a cencielles como *módulu*. En munchos llinguaxes de programación impleméntase como `a % b`, ente que n'otros ye `a mod b` (Visual Basic o Pascal) o bien `a rem b` (Ada).

## Ver tamién
* 

## Referencies

## Bibliografía

* 
* 
* 
* 
* 
* 
* 
* 
* 

* 
* 
* 
* 

## Enllaces esternos

* Divisibilidad. L'algoritmu d'Euclides.
* Algoritmu d'Euclides.
* 

*Esplicación dinámica del máximu común divisor nesti videu de YouTube*[https://www.youtube.com/watch?v=WHUQSkaVXd4]*.

*En **gaussianos**** pueden vese esplicaciones y exemplos un pocu más avanzaos d'esti algoritmu.