Algoritmo de Euclides

Embed Size (px)

Citation preview

Algoritmo de EuclidesDe Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda El algoritmo de Euclides es un mtodo antiguo y eficaz para calcular el mximo comn divisor (MCD). Fue originalmente descrito por Euclides en su obra Elementos. El algoritmo de Euclides extendido es una ligera modificacin que permite adems expresar al mximo comn divisor como una combinacin lineal. Este algoritmo tiene aplicaciones en diversas reas como lgebra, teora de nmeros y ciencias de la computacin entre otras. Con unas ligeras modificaciones suele ser utilizado en computadoras electrnicas debido a su gran eficiencia.

Contenido[ocultar]y y

y

y

y y y y

1 Algoritmo original de Euclides 2 Algoritmo de Euclides tradicional o 2.1 Generalizacin o 2.2 Descripcin formal 3 Algoritmo de Euclides extendido o 3.1 Fundamentos o 3.2 Descripcin formal 4 Aplicaciones o 4.1 Simplificar fracciones o 4.2 Fracciones continuas o 4.3 Inversos modulares 5 Complejidad del algoritmo 6 Implementacin en pseudocdigo 7 Referencias 8 Enlaces externos

[editar] Algoritmo original de Euclides

AB y CD son segmentos conmensurables.

Ejemplo del algoritmo original de Euclides. En la concepci n griega de la matemtica, los nmeros se entendan como magnitudes geomtricas. Un tema recurrente en la geometra griega es el de la conmensurabilidad de dos segmentos: dos segmentos (nmeros) AB y CD son conmensurables cuando existe un tercer segmento PQ el cual cabe exactamente un nmero entero de veces en los primeros dos, es decir, PQ mide (mensura: medida) a los segmentos AB y CD. No cual uier par de segmentos es conmensurable, como encontraron los pitagricos 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 comn posible. Euclides describe en la proposicin VII. de sus Elementos un mtodo que permite hallar la mayor medida comn posible de dos nmeros (segmentos) que no sean primos entre s, aunque de acuerdo a la poca tal mtodo se explica en trminos geomtricos, lo que se ilustra en la siguiente transcripcin. Para encontrar la mxima medida comn de dos nmeros que no sean primos entre s.

Sean AB y CD los dos nmeros que no son primos uno al otro. Se necesita entonces encontrar la mxima medida comn de AB y CD. Si CD mide AB entonces es una medida comn puesto queCD se mide a s mismo. Y es mani iesto que tambin es la mayor medida pues nada mayor a CD puede medir a CD. Pero si CD no mide a AB entonces algn nmero quedar de AB y CD, el menor siendo continuamente restado del mayor y que medir al nmero que le precede. Porque una unidad no quedar pues si no es as, AB y CD sern primos uno del otro [Prop. VII. ], lo cual es lo contrario de lo que se supuso. Por tanto, algn nmero queda que medir el nmero que le precede. Y seaCD 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 tambin se mide a s mismo. Por tanto tambin medir todo CD. Y CD mide a BE. Entonces CF mide a BE y tambin mide a EA. As mide a todo BA y tambin mide a CD. Esto es, CF mide tanto a AB y CD por lo que es una medida comn de AB y CD. Afirmo que tambin es la mayor medida comn posible porque si no lo fuera, entonces un nmero mayor que CF mide a los nmeros AB y CD, sea ste G. Dado que G mide a CD y CD mide a BE, G tambin mide a BE. Adems, mide a todo BA por lo que mide tambin al residuo AE. Y AE mide a DF por lo que G tambin mide a DF. Mide tambin a todo DC por lo que mide tambin al residuo CF, es decir el mayor mide al menor, lo cual es imposible. Por tanto, ningn nmero mayor a CF puede medir a los nmeros AB y CD. Entonces CF es la mayor medida comn de AB y CD, lo cual se quera demostrar. Euclides. El t VII.2 En lenguaje moderno, el algoritmo se describe como sigue: . 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 mxima medida comn.

2. Si se obtiene un residuo EF, ste es menor que CD y podemos repetir el proceso: restamos EF tantas veces como sea posible de CD. Si al final no queda un residuo, EF es la medida comn. En caso contrario obtenemos un nuevo residuo GH menor a EF. . El proceso se repite hasta que en algn momento no se obtiene residuo. Entonces el ltimo residuo obtenido es la mayor medida comn. El hecho de que los segmentos son conmesurables es clave para asegurar que el proceso termina tarde o temprano

[editar] Al oritmo de Euclides tradicionalAl dividir a entre b (nmeros enteros), se obtiene un cociente q y un residuo r. Es posible demostrar que el mximo comn divisor de a y b es el mismo que el de b y r. ste es el fundamento principal del algoritmo. Tambin es importante tener en cuenta que el mximo comn divisor de cualquier nmero a y 0 es precisamente a. Para fines prcticos, la notacin mcd(a,b) significa mximo comn divisor d a y b. Segn lo antes mencionado, para calcular el mximo comn divisor de 2366 y 273 se puede proseguir de la siguiente manera: Paso Operacin Si nificado 1 2366 dividido entre 273 es y sobran 182 mcd(2366,273) = mcd(273,182) 2 273 dividido entre 182 es 1 y sobran 91 mcd(273,182) = mcd(182,91) 3 182 dividido entre 91 es 2 y sobra 0 mcd(182,91) = mcd(91,0) La secuencia de igualdades mcd(2366,273) = mcd(273,182) = mcd(182,91) = mcd(91,0) implican que mcd(2366,273) = mcd(91,0). Dado que mcd( 91,0) = 91, entonces se concluye que mcd(2366,273) = 91. Este mismo procedimiento se puede aplicar a cualesquiera dos nmeros naturales. En general, si se desea encontrar el mximo comn divisor de dos nmeros naturales a y b, se siguen las siguientes reglas: 1. Si b = 0 entonces mcd(a,b) = a y el algoritmo termina 2. En otro caso, mcd(a,b) = mcd(b,r) donde r es el resto de dividir a entre b. Para calcular mcd(b,r) se utili an estas mismas reglas Asuma que llamamos a = r0 y b = r1. Aplicando estas reglas se obtiene la siguiente secuencia de operaciones: Paso Operacin 1 r0 dividido entre r1 es q1 y sobran r2 2 r1 dividido entre r2 es q2 y sobran r3 3 r2 dividido entre r3 es q3 y sobran r

Si nificado mcd(r0,r1) = mcd(r1,r2) mcd(r1,r2) = mcd(r2,r3) mcd(r2,r3) = mcd(r3,r )

n rn 1 dividido entre rn es qn y sobran rn + 1 mcd(rn 1,rn) = mcd(rn,rn + 1) n + 1 rn dividido entre rn + 1 es qn + 1 y sobra 0 mcd(rn,rn + 1) = mcd(rn + 1,0)

Como la sucesin de residuos va disminuyendo, eventualmente un residuo tiene que ser cero y es en ese momento cuando el algoritmo termina. El mximo comn divisor es precisamente rn + 1 (el ltimo residuo que no es cero).

[editar] GeneralizacinEn realidad el algoritmo de Euclides funciona no slo para los nmeros naturales, sino para cualesquiera elementos donde exista una "divisin con residuo". A este tipo de divisiones se les llama divisiones euclidianas y a los conjuntos donde se puede definir dicha divisin se les llama dominios eucldeos. Por ejemplo, el conjunto de los nmeros enteros y el de los polinomios con coeficientes racionales son dominios eucldeos porque podemos definir una divisin con residuo (vaseDivisin polinomial). De esta manera, se puede calcular el mximo comn divisor de dos nmeros enteros o de dos polinomios. Por ejemplo, para calcular el mximo comn divisor de los polinomios P(x) = x + 2x3 + x y Q(x) = x 1 el algoritmo de Euclides sugiere la siguiente secuencia de operaciones:

Paso 1 2 3

Operacin x5 + 2x3 + x dividido entre x 1 es x y sobra 2x3 + 2x x 1 dividido entre 2x3 + 2x es y sobra x2 1 2x3 + 2x dividido entre x2 1 es 2x y sobra 0

Si nificado mcd(x5 + 2x3 + x,x 1) = mcd(x 1,2x3 + 2x) mcd(x 1,2x3 + 2x) = mcd(2x3 + 2x, x2 1) mcd(2x3 + 2x, x2 1) = mcd( x2 1,0)

De esta manera se concluye que su mximo comn divisor es x2 1.

[editar] Descripcin formalSe puede expresar este algoritmo de manera ms formal usandopseudocdigo. En este caso la expresin "xmod y" significa "el residuo de dividir x entre y" (vase Aritmtica modular). Al oritmo 1 de Euclides Entrada: Valores a y b pertenecientes a un dominio eucldeo Salida: Un mximo comn divisor de a y b 1. , 2. 3. Mientras haga lo siguiente: 1. 2. . El resultado es: ri 1

Vale la pena notar que este algoritmo no es eficiente ser implementado directamente en una computadora, ya que requerira memori ar todos los valores deri.

[editar] Algoritmo de Euclides extendidoEl algoritmo de Euclides extendido permite, adems de encontrar u mximo comn n divisor de dos nmeros enteros a y b, expresarlo como la mnima combinacin lineal de esos nmeros, es decir, encontrar nmeros enteros s y t tales que mcd(a,b) = as + bt. Esto se generali a tambin hacia cualquier dominio euclideano.

[editar] FundamentosExisten varias maneras de explicar el algoritmo de Euclides extendido, una de las ms comunes consiste en la siguiente: 1. Usar el algoritmo tradicional de Euclides. En cada paso, en lugar de "a dividido entre b es q y sobra r" se escribe la ecuacin a = bq + r (vase algoritmo de la divisin). 2. Se despejan los residuos de cada ecuacin. 3. Se substituye el residuo de la ltima ecuacin en la penltima, y la penltima en la antepenltima y as sucesivamente hasta llegar a la primera ecuacin, y en cada paso expresar cada residuo como combinacin lineal. Sin embargo, en aras de la comprensin y memori acin de este algoritmo, es conveniente conocer la siguiente caracteri acin. Para multiplicar dos matrices de tamao se usa la siguiente frmula (vse Producto de matrices):

(1) Supngase que se utili a el algoritmo de Euclides tradicional para calcular los valoresqi y ri que ah se describen. Por cada valor qi calculado se puede formar la matri . Usando la ecuacin (1) de manera repetida se puede calcular el producto las primeras i matrices de este tipo:

Resulta ser que los valores si y ti tienen la propiedad de que ri = asi + bti, es decir, expresan a ri como una combinacin lineal de a y b. Particularmente, como mcd(a,b) = rn + 1 entonces se tiene mcd(a,b) = asn + 1 + btn + 1, lo cual es la solucin del problema. Esta propiedad no debera ser sorprendente, pues esta multiplicaci de matrices n equivale al mtodo antes descrito donde se substituye cada ecuacin en la anterior. Es importante calcular en ese mismo orden. La matri Q1 aparece en el extremo derecho y la matri Qi en el i quierdo.

Regresando al primer ejemplo, la sucesin de cocientes es q1 = 8, q2 = 1 y q3 = 2. Entonces se puede calcular

Utili ando el primer rengln de esta matri se puede leer que 91 = 2366( 1) + 273(9), es decir, se ha encontrado la manera de expresar al mximo comn divisor de 2366 y 273 como una combinacin lineal.

[editar] Descripcin formalPara expresar el algoritmo de Euclides extendido es conveniente notar la manera en que se calculan los valores si y ti con la multiplicacin de matrices:

De esta manera si + 1 = si 1 qisi y adems ti + 1 = ti 1 qiti. Por lo tanto el algoritmo en pseudocdigo se puede expresar como sigue: Algoritmo 2 de Euclides extendido Entrada: Valores a y b pertenecientes a un dominio eucldeo Salida: Un mximo comn divisor de a y b, y valores s y t tales que mcd(a,b) = as + bt 1. 2. 3. Mientras haga lo siguiente: 1. Divida ri 1 entre ri para obtener el cociente qi y el residuo ri + 1 2. 3. . . El resultado es: ri 1 es un mximo comn divisor de a y b y se expresa ri 1 = asi 1 + bti 1

[editar] Aplicaciones[editar] Simplificar fraccionesAl momento de hacer clculos con fracciones, es de gran importancia saber cmo simplificarlas. Por ejemplo, la fraccin De manera ms general, es equivalente con (vase Nmero racional). . Para reducir una fraccin siempre que

cualquiera , slo se necesita dividir a y b entre su mximo comn divisor.

Por ejemplo, si se desea reducir , primero se usa el algoritmo de Euclides para encontrar mcd(166,249) = 83. Se hacen las divisiones y . Luego entonces se concluye que .

[editar] Fracciones continuasLa sucesin de divisiones que se efectan al seguir algoritmo de Euclides puede ser utili ada para expresar una fraccin cualquiera como fraccin continua. Esto se debe a que si a = bq + r y , entonces

(3) Por ejemplo, para encontrar el mximo comn divisor de 93164 y 5826 el algoritmo genera la siguiente secuencia de divisiones: Paso Operacin 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 Significado

Todas estas ecuaciones las podemos hacer parecidas a la ecuacin (3): 1. 2. 3. 4. Si se substituye la segunda ecuacin en la primera, se obtiene

Si se repite este proceso de substitucin entonces se obtiene la expresin deseada:

De manera ms general, la fraccin continua encontrada con este algoritmo siempre es de la forma

[editar] Inversos modularesArtculo principal: inverso multiplicativo (aritmtica modular)

Decimos que dos nmeros enteros son congruentes mdulo m (aunque tambin se puede generali ar para cualquier otro dominio eucldeo) si al dividirlos entre m obtenemos el mismo residuo (vase Congruencia). Por ejemplo, 7 es congruente con 12 mdulo 5 porque al dividir 7 entre 5 y 12 entre 5, en ambos casos obtenemos el mismo residuo (que es 2). Cuando a es congruente con b mdulo m se escribe en el ejemplo anterior se tiene . Supngase que se conocen los valores de a, b y m, pero que se desconoce el valor x de la siguiente ecuacin: (2) Basta con encontrar un valor a 1 que tenga la caracter stica de que , pues de esta manera al multiplicar la ecuacin (2) por a 1 se tendr la solucin deseada: a ,

Al valor a 1 se le llama inverso modular de a mdulo m. Desafortunadamente este valor no siempre existe. Por ejemplo, con a = 4 y m = 6 no existe ningn nmero entero entero a 1 tal que . De hecho este valor existe si y slo si mcd(a,m) = 1. Ms an, si al usar el algoritmo de Euclides extendido (ahora con b = m) se obtiene 1 = as + mt, entonces el valor s es el inverso modular de a mdulo m. Por ejemplo, se desea resolver la ecuacin

Entonces con el algoritmo de Euclides extendido se calcula que mcd(5,9) = 1 = 5(2) + 9( 1). Como mcd(5,9) = 1 entonces 5 tiene un inverso modular. Ms an, como 1 = 5(2) + 9( 1), entonces ese inverso es 2. Entonces

Es decir que el valor de x es 4.

[editar] Complejidad del algoritmo

Grfica del nmero de divisiones efectuadas en el algoritmo de Euclides. El rojo indica pocas operaciones, mientras que los colores eventualmente ms azules representan mayor nmero de operaciones. El teorema de Lam afirma que el caso peor para este algoritmo es cuando se le pide calcular el mximo comn divisor de dos nmeros consecutivos de lasucesin de Fibonacci. Por ejemplo, si se desea calcular el mximo comn divisor de f10 = 55 y f11 = 89 se obtiene la siguiente secuencia de operaciones: Paso Operacin Significado 1 89 dividido entre 55 es 1 y sobran 34 mcd(89,55) = mcd(55,34) 2 55 dividido entre 34 es 1 y sobran 21 mcd(55,34) = mcd(34,21) 3 34 dividido entre 21 es 1 y sobran 13 mcd(34,21) = mcd(21,13) 4 21 dividido entre 13 es 1 y sobran 8 mcd(21,13) = mcd(13,8) 5 13 dividido entre 8 es 1 y sobran 5 mcd(13,8) = mcd(8,5) 6 8 dividido entre 5 es 1 y sobran 3 mcd(8,5) = mcd(5,3) 7 5 dividido entre 3 es 1 y sobran 2 mcd(5,3) = mcd(3,2) 8 3 dividido entre 2 es 1 y sobran 1 mcd(3,2) = mcd(2,1) 9 2 dividido entre 1 es 2 y sobra 0 mcd(2,1) = mcd(1,0) En este ejemplo se observa que con estos dos nmeros de dos dgitos decimales, se necesita hacer 9 divisiones. En general, el nmero de divisiones efectuadas por el algoritmo nunca supera 5 veces el nmero de dgitos que tienen estos nmeros. En trminos de complejidad computacional, esto significa que se requieren divisiones para calcular el mximo comn divisor de n y m donde n > m. El nmero promedio de divisiones efectuadas por el algoritmo se estuvo investigando desde 1968, pero slo hasta apenas el ao 2002, Brigitte Valle demostr que si los dos nmeros se pueden representar con n bits, entonces el nmero promedio de divisiones necesarias es .

Sin embargo, no basta con saber el nmero de divisiones. Hay que recordar que el algoritmo de Euclides funciona tanto para polinomios como para nmeros enteros, y en

general, cualquier dominio Eucldeo. En cada caso, la complejidad del alg oritmo depende del nmero de divisiones efectuadas y del costo de cada divisin. En el caso de los polinomios, el nmero de divisiones es polinomios. donde n es el grado de los

[editar] Implementacin en pseudocdigoEn general, los algoritmos 1 y 2 no son muy apropiados para implementarse directamente en un lenguaje de programacin, especialmente porque consumen mucha memoria. Si no se necesitan los valores intermedios, y slo se desea calcular el mximo comn divisor de dos nmeros enteros, conviene usar estas variantes: Algoritmo de Euclides tradicional implementado de manera recurrente Funcin mcd(a,b): Si b = 0 entonces: El resultado es a En otro caso: El resultado es Algoritmo de Euclides tradicional implementado de manera iterativa Funcin mcd(a,b): Mientras haga lo siguiente:

El resultado es a Algoritmo de Euclides extendido implementado de manera recurrente Funcin Euclides(a,b): Si b = 0 entonces: El resultado es (a,1,0) En otro caso: El resultado es Algoritmo de Euclides extendido implementado de manera iterativa Funcin Euclides(a,b):

Mientras haga lo siguiente: Divida a entre b para obtener un cociente q y un residuo r El resultado es (a,s,t) Algoritmo de Euclides extendido implementado de manera iterativa con matrices Funcin Euclides(a,b):

Mientras haga lo siguiente: Divida a entre b para obtener un cociente q y un residuo r

El resultado es (a,Q11,Q12) Acerca de la notacin empleada:y

y

y

y

significa "asigne a la variable x el valor actual de 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 b, comenzamos dividiendo a/b, con lo que obtendremos un resto r1 y un cociente q1. Hacemos la operacin q1 a/b, utilizando la divisin entera, sin decimales.... pero realmente no slo nos interesa el resultado o cociente de la divisin, sino que nos interesa tambin el resto, as que la operacin la vamos a reescribir de otra forma. Es importante que llamemos "a" al mayor de los dos nmeros. Debemos dividir a entre b y obtener un cociente (al que llamaremos q1 ) y un resto (al que llamaremos r1). a=q1b+r1 Los lenguajes de programacin suelen tener un operador para efectuar la divisin entera (con lo que obtendremos q1. Por ejemplo, en C : "q1=a/b;"), y otro para obtener el resto o mdulo de la divisin (con lo que obtendremos r1. Por ejemplo, en C : "r1=a%b;"). A partir de esa primera divisin, es necesario repetir un proceso:y y y y

Es un poco engorroso la primera vez, pero realmente es un algoritmo muy sencillo. Siguiendo con el ejemplo, en la segunda iteracin, dividiramos b/r1 obteniendo un resto r2 (hacemos la operacin de divisin para obtener el cociente, al que llamamos q2 y la de obtener el resto, al que llamamos r2), de tal manera que se cumpla lo siguiente: b=q2r1+r2 En la tercera iteracin, dividimos r1/r2 obteniendo un resto r3

dividir el dividendo del paso anterior entre el resto del paso anterior despreciar el cociente si el resto es 0, el mcd es el divisor de esta operacion, es decir, el ltimo resto no nulo (recordemos que el divisor de esta operacin fu el resto en la anterior. Si el resto no es 0, ir al primer paso

r1=q3r2+r3 Y se contina as hasta obtener un resto 0. El ltimo resto rk distinto de cero es el mcd. rk-2=qkrk-1+rk rk-1=qk+1rk+0

rk es el mcd(a,b) Es decir, empezamos dividiendo un nmero entre otro (obteniendo el resto tambin, no slo el cociente), y a partir de ah, seguimos dividiendo el nmero ms pequeo entre el resto que nos ha salido... y continuamos dividiendo por el resto anterior una vez y otra hasta que en ese proceso repetitivo obtengamos un resto que sea 0. Ya lo tenemos!. El mcd es es resto anterior (que no es cero). Como comentbamos al principio, es muy sencillo implementarlo iterativamente. Basta tener en cuenta que en cada vuelta del bucle, y siempre a partir de la segunda iteracin hay que hacer que el divisor sea el resto de la iteracin anterior y el dividendo sea el divisor de la iteracin anterior. Observa este cdigo en C . En l vamos a utilizar dos variables enteras i1 e i2, que inicialmente van a contener los valores de los dos enteros a y b que se pasen como parmetros, de tal manera que i1 tendr al mayor de los dos, e i2 al ms pequeo... y a partir de ah nos metemos en un bucle. La dinmica es siempre la misma: obtenemos el resto de la divisin, y si no es 0, debemos hacer otra repeticin. Pero antes de la siguiente repeticin, desplazamos los valores: lo que contena i1 ya no nos sirve. Metemos en i1 lo que tiene i2, y en i2 el resto que hemos obtenido.... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 static int EuclidesMCD(int a, int b) { int iaux; //auxiliar a = Math.Abs(a); //tomamos valor absoluto b = Math.Abs(b); int i1=Math.Max(a,b); //i1 = el ms grande int i2=Math.Min(a,b); //i2 = el ms pequeo do { iaux = i2; //guardar divisor i2 = i1 % i2; //resto pasa a divisor i1 = iaux; //divisor pasa a dividendo } while (i2 != 0); return i1; //ultimo resto no nulo }

Al principio cuesta un poco de coger... te recomiendo hacer una traza mentalmente (o mejor, ayudndote de papel).

Te dars cuenta de cmo se van "desplazando los valores" a medida que vamos dividiendo hasta obtener el resto 0... aunque, realmente... no estamos utilizando los cocientes, sino slo los restos ;-) Aunque en la introduccin hemos mencionado la divisin ("/"), realmente no es del todo cierto... slo queremos los restos, no el cociente...(operador mdulo o resto: "%" en C ). Hemos introducido esta pequea mentira en la explicacin (pero no en el cdigo) porque cuando dividimos "a mano", realmente en la misma operacin de divisin obtenemos dos resultados a la vez: por un lado el cociente y por otro, el resto. Sin embargo, los lenguajes de programacin hacen cada una de esas cosas por separado: pueden obtener un cociente sin necesidad de obtener un resto y al revs, obtener un resto sin necesidad de dividir... as que en nuestro algoritmo no dividimos realmente: slo obtenemos el resto. Si lo hiciramos "a mano", tendramos que dividir, con lo que obtendramos el cociente y el resto simultneamente, pero despreciaramos el cociente y nos quedaramos slo con el resto.

Mnimo Comn Mltiplo.Muy relacionado con el mximo comn divisor est el mnimo comn mltiplo (mcm). El mcm de dos enteros positivos a y b es un valor c entero y positivo tal que al dividir c/a y c/b el resto es 0, y adems no existe otro nmero menor que c que cumpla esta condicin. Hay una relacin muy sencilla entre mcm y mcd. Es sta: mcm(a,b)=(ab)/mcd(a,b) As pues, tambin podemos obtener el mcm mediante el algoritmo de Euclides. 1 2 3 4 static int EuclidesMCM(int a, int b) { return (a / EuclidesMCD(a, b)) * b; }

NOTA: Observa que primero se divide a entre el mcd, en lugar de multiplicar a*b. Esto se hace para evitar un posible desborda miento al multiplicar a*b.

Puedes probar el resultado del algoritmo de Euclides con esta minidemo:

Mximo comn divisor

De Wi ipedia, la enciclopedia libre Saltar a navegacin, bsqueda En matemticas el mximo comn divisor (abreviado MCD) de dos o ms nmeros enteros es el mayor nmero que los divide sin dejar resto. Por ejemplo, el MCD de 42 y 56 es 14. En efecto, y y son primos entre s (no existe ningn nmero natural aparte de 1 que divida a la vez al 3 y al 4).

Contenido[ocultar]y

y y y

1 Clculo del MCD o 1.1 Descomposicin en factores primos o 1.2 Algoritmo de Euclides o 1.3 MCD de tres o ms nmeros 2 Propiedades 3 Aplicaciones 4 Enlaces externos

[editar] Clculo del MCDLos dos mtodos ms utilizados para el clculo del mximo comn divisor de dos nmeros son:

[editar] Descomposicin en factores primosArtculo principal: Factorizacin de enteros

El mximo comn divisor de dos nmeros puede calcularse determinando la descomposicin en factores primos de los dos nmeros y tomando los factores comunes elevados a la menor potencia, el producto de los cuales ser el MCD. Por ejemplo, para calcular el mximo comn divisor de 48 y de 60 obtenemos la factorizacin en factores primos De las factorizaciones de 48 y 60:

El MCD son los factores comunes con su menor exponente, esto es:

En la prctica, este mtodo solo es operativo para nmeros pequeostomando en general demasiado tiempo calcular la descomposicin en factores primos de dos nmeros cualesquiera.

[editar] Algoritmo de EuclidesArtculo principal: Algoritmo de Euclides

Un mtodo ms eficiente es el algoritmo de Euclides, que utiliza el algoritmo de la divisin junto al hecho que el mcd de dos nmeros tambin divide al resto de dividir el mayor entre el ms pequeo: se divide 60 entre 48 dando un cociente de 1 y un resto de 12. El MCD ser por tanto divisor de 12. Despus se divide 48 entre 12 dando un resto de 0, lo que significa que 12 es el mcd. Formalmente puede describirse como:

[editar] MCD de tres o ms nmerosEl mximo comn divisor de tres nmeros se puede calcular como sigue: aunque hay mtodos ms prcticos y sencillos.

[editar] Propiedades1. Si 2. Si 3. Si es un entero, es un nmero primo, entonces o bien , entonces

4. Si entonces 5. Si es un divisor comn de y , entonces

6. Si 7. Si entonces:

, entonces ,

La ltima propiedad dice que el mximo comn divisor de dos nmeros resulta ser el producto de sus factores primos comunes elevados al menor exponente. Geomtricamente, el mximo comn divisor de a y b es el nmero de puntos de coordenadas enteras que hay en el segmento que une los puntos (0,0) y ( ,b), a excluyendo el (0,0).

[editar] AplicacionesEl MCD se utiliza para simplificar fracciones. Por ejemplo, para simplificar la fraccin se calcula primero el mcd(60, 48) = 12, dividindose el numerador y el denominador de la fraccin inicial por 12 para obtener la fraccin simplificada . El MCD tambin se utiliza para calcular el mnimo comn mltiplo de dos nmeros. En efecto, el producto de los dos nmeros es igual al producto de su mximo comn divisor por su mnimo comn mltiplo. As, para calcular el mnimo comn mltiplo de 48 y de 60, calculamos primero su mcd, 12, siendo su mnimo comn mltiplo .