0% encontró este documento útil (0 votos)
139 vistas4 páginas

Algoritmo Extendido de Euclides

Este documento presenta dos algoritmos para calcular el máximo común divisor (MCD) de dos números. El primer algoritmo es el algoritmo extendido de Euclides, que calcula el MCD y expresa los resultados en función de los números originales usando un stack. El segundo algoritmo es más eficiente y resuelve el problema sin usar un stack, almacenando los residuos y valores de x e y en cada paso del algoritmo.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
139 vistas4 páginas

Algoritmo Extendido de Euclides

Este documento presenta dos algoritmos para calcular el máximo común divisor (MCD) de dos números. El primer algoritmo es el algoritmo extendido de Euclides, que calcula el MCD y expresa los resultados en función de los números originales usando un stack. El segundo algoritmo es más eficiente y resuelve el problema sin usar un stack, almacenando los residuos y valores de x e y en cada paso del algoritmo.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Algoritmos para el Mximo Comn Divisor a u

Jhoel Darwin Quispe Condori 27 de abril de 2012

1.
1.1.

Explicacin terica de cada Algoritmo o o


Algoritmo Extendido de Euclides 1

Referencia: [Link] . pag14 (Extended Euclids Algorithm) Es una versin del algoritmo clsico de Euclides, en el cual el resultado se o a muestra en funcin de la ecuacin: MCD(a, b) = a(x) + b(y) tales que x, y sean o o nmeros enteros. Se siguen los siguientes pasos: u 1. Se realiza el algoritmo de Euclides. 2. Se almacena los cocientes de las operaciones para hallar el MCD. 3. Se aplica la propiedad: d = kb + lq Remplazando q; hasta llegar a: d = kb + l(a - rb) = la + (k - lr)b 4. Esto se ejecuta hasta expresar el MCD en funcin de los dos nmeros inio u ciales.

1.1.1.

Implementacin Algoritmo Extendido de Euclides o

1. Con la nalidad de mostrar y organizar los datos de la funcin se impleo mentar la funcin insertar, que retornar un array de shenlongs con 3 a o a espacios separados: para el MCD, para el valor x y para y. 2. Se les asigna a a y b los valores de dividendo y divisor, un array de shenlong de tamao 3 y 9 variables de tipo shenlong para ir almacenando los n datos a = 1317; b = 56; x; y .

3. Se crea shenlong res para el resultado, es decir el residuo, y shenlong temp, Tambien un stack de shenlong para almacenar en este los cocientes. 4. Luego pregunta si a modulo b es igual a 0, para los casos en los que se ingrese dos numeros, el primero multiplo del segundo, en este caso y se vuelve 1, x no cambia, y el MCM es 0. 5. Si no cumple con esa condicin se realiza lo siguiente: o 6. Se realiza un bucle hasta que el modulo de a y b sea distinto de 0, en este bucle:(este paso desarrolla de forma comun MCM de la forma euclides clasico, y a la vez almacena los valores de -a/b en un stack). Asigna a [Link] valor actual de -a/b. Asigna a la variable temp el valor actual de b. Asigna a la variable b el valor actual de a modulo b. Asigna a la variable a el valor actual de temp. 7. Se le asigna el valor de b a res(con este paso ya se tiene listo el residuo). res = 1 . 8. Se le asigna el valor de [Link] a y. y = -13 . 9. Se elimina el ultimo valor de s con [Link]. 10. Se le asigna el valor 1 a x. y = 2 . 11. Se crea un bucle hasta que el stack 1 este vacio(en este se hallan los valores de x y y): Asigna a tempel valor actual de x. Asigna a la variable x el valor actual de y. Asigna a la variable y el valor actual de temp + y*[Link](). Se elimina el ultimo valor del stack s con [Link]. 12. Al nal de este ultimo bucle, los valores de x y y son -27 y 635 respectivamente.

1.1.2. res 0 0 0 0 0 1 x 1 -13 14 -27

Tablas del Algoritmo Extendido de Euclides a 1317 56 29 27 2 1 y -13 14 -27 635 b 56 29 27 2 1 0 temp 1 -13 14 temp 0 56 29 27 2 2 [Link] -1 -1 -23 s -23 -1 , -23 -1 , -1 , -23 -13 , -1 , -1 , -23 -13 , -1 , -1 , -23 s -1 , -1 , -23 -1 , -23 -23 -

2.

Algoritmo Extendido de Euclides 2

Este algoritmo resulta mucho mas ecaz que el anterior ya que resuelve todo el problema sin tener que crear ningun stack. Ahora sera explicado 1. Con la nalidad de mostrar y organizar los datos de la funcim se impleo mentar la funcin insertar, que retornar un array de shenlongs con 3 a o a espacios separados: para el MCD, para el valor x y para y. 2. Se les asigna a a y b los valores de dividendo y divisor, un array de shenlong de tamao 3 y 9 variables de tipo shenlong para ir almacenando los n datos a = 100; b = 60: shenlong p[3]; shenlong x, y, x1, y1, x2, y2, d, q, r . 3. Luego pregunta si b es igual a 0: (En este caso no pasa, por lo que no entra a este if )

Asigna al valor de d que representa el MCD, el valor de a. A la variable x se le asigna 1 y a y se le asigna 0. Inserta los valores de d, x, y en el array p.

4. Si no cumple con esa condicin: asigna a los valores de x2, y1 el valor o entero de 1; y a los valores de x1; y2 los valores de 0. Adems inicializa a un bucle que sucede mientras (while) b sea distinto de 0:

Asigna a la variable q el cociente de a y b. 1 : q = 1 ; 2 q = 1 ; 3 : q = 2 . Asigna a la variable r la diferencia de a y el producto de q y b, en pocas palabras el residuo. 1 : r = 40 ; 2 : r = 20 ; 3 : r = 0 . Asigna a x y a y, la diferencia de x2 y el producto de q y x1 ; y la diferencia de y2 y el producto de q y y2. De esta forma se van almacenando los distinstos residuos, adems, los valores de x y de y a van cambiando. 1 : x = 1; y = -1 ; 2 : x = -1; y = 2 ; 3 : x = 3; y = -3 . A la variable a se le asigna b y a b se le asigna r. 1 :a = 60; b = 40 ; 2 : a = 40; b = 20 ; 3 : a = 20; b = 0 A x2 se le asigna x1 ; a x1 se le asigna x ; a y2 se le asigna y1 ; y a y1 se le asigna y. 1 : x2 = 0; x1 = 1; y2 = 1; y1 = -1 ; 2 : x2 = 1; x1 = -1; y2 = 1; y1 = 2 3 : x2 = -1; x1 = 3; y2 = 2; y1 = -3 .

5. Se le asigna el valor de a a d. d = 20 . 6. Se le asigna el valor de x2 a x. x = -1 . 7. Se le asigna el valor de y2 a y. y = 2 . 8. Se almacenar d, x y y en el array p y se imprimirn los valores: d = 20; a a x = -1; y = 2 .

También podría gustarte