Algoritmo de Euclides
De Wikipedia, la enciclopedia libre
El algoritmo de Euclides es un método eficaz para calcular el máximo común divisor (mcd) entre dos números enteros.
El algoritmo consiste en varias divisiones euclidianas sucesivas. En la primera división, se toma como dividendo el mayor de los números y como divisor el otro (se ahorra así un paso). Luego, el divisor y el resto sirven respectivamente de dividendo y divisor de la siguiente división. El proceso termina cuando se obtiene un resto nulo. El mcd es entonces el penúltimo resto del algoritmo.
Tabla de contenidos |
[editar] Definición
Formalmente, si llamamos a, b a los enteros iniciales, r1, r2 ... rn-1 y rn = 0 a los restos sucesivos obtenidos mediante el algoritmo de la división, entonces:
En efecto, los divisores comunes de a y b son los de a - b·q y b:
porque si q divide a y b, obviamente divide a - (b·q) que es una combinación lineal de ambos, y recíprocamente a = (a - b·q) + b·q es una combinación lineal de b y a - b·q. Luego el menor de los divisores comunes es el mismo, y repitiendo la operación:
Esto permite detallar el algoritmo efectivo:
|
Este algoritmo da como resultado 0 si a y b son nulos, mientras que en matemáticas, el mayor divisor de cero no existe.
[editar] Ejemplos
Implementación en Winpseudo V1.4
INICIO Programa26 - "MCD - Algoritmo de Euclides - Usando RESTO" VAR NUMERICO A NUMERICO B NUMERICO R STRING PTR FIN-VAR LEER (A) LEER (B) R = 1 MIENTRAS (R # 0) PTR = UNIR(NL," MCD(", A, ", ", B, ") = ") IMPRIMIR (PTR) R = A % B A = B B = R FIN-MIENTRAS IMPRIMIR ENTERO(A) FINAL
INICIO Programa26 - "MCD - Algoritmo de Euclides - Usando RESTAS SUCESIVAS" VAR NUMERICO A NUMERICO B FIN-VAR LEER (A) LEER (B) MIENTRAS (A # B) IMPRIMIR NL, " MCD(" IMPRIMIR ENTERO(A) IMPRIMIR ", " IMPRIMIR ENTERO(B) IMPRIMIR ") = " SI (A < B) INTERCAMBIAR (A, B) FIN-SI A = A - B FIN-MIENTRAS IMPRIMIR NL, " MCD = " IMPRIMIR ENTERO(B) FINAL
Se busca el máximo común divisor de a = 945 y b = 651, números escogidos al azar:
945 = 1×651 + 294
651 = 2×294 + 63
294 = 4×63 + 42
63 = 1×42 + 21
42 = 2×21 + 0 entonces mcd(945; 651) = 21 (el último resto no nulo).
Como segundo ejemplo, tomemos números de tamaños parecidos a los anteriores: a = 987 y b = 610:
987 = 1×610 + 377
610 = 1×377 + 233
377 = 1×233 + 144
233 = 1×144 + 89
144 = 1×89 + 55
89 = 1×55 + 34
55 = 1×34 + 21
34 = 1×21 + 13
21 = 1×13 + 8
13 = 1×8 + 5
8 = 1×5 + 3
5 = 1×3 + 2
3 = 1×2 + 1
2 = 2×1 + 0 entonces mcd(987; 610) = 1 (el último resto no nulo).
El segundo ejemplo es sustancialmente más largo que el primero, y esto se debe a que todos los cocientes valen 1. Aquí a y b no fueron escogidos al azar: son dos términos consecutivos de la sucesión de Fibonacci; es el peor de los casos para este algoritmo. Sin embargo, el número de pasos elementales es en O(n2) - inferior a An2 con A una constante - donde n es el número de cifras del más pequeño entre a y b.
==Algoritmo en c.==
int r,a,b; printf ("\n Introduce un numerador: "); scanf ("%d",&a); printf ("\n Introduce un denominador: "); scanf ("%d",&b); if (a<0)a=a*-1; if (b<0)b=b*-1; while (b!=0) { r=a%b; a=b; b=r; } printf ("\n El resultado es %d",a); return a;| [editar] Número de pasos elementalesPara ver la demostración en la que se postula que el número de pasos elementales que hay que hacer en el algoritmo de Euclides es una función logarítmica en base a la Divina Proporción sobre el menor de los números sobre los cuales queremos conocer el máximo común divisor: [editar] Fracciones continuasLas divisiones euclidianas del algoritmo son idénticas a las que permiten hallar la expresión en fracción continua de En efecto, a = bq1 + r1 se puede escribir Este proceso funciona también con valores irracionales de a/b (con a y b reales). en tal caso, el algoritmo no se para, lo que da una fracción continua infinita. Son de especial interés estas fracciones, como en los casos de π y e.
[editar] Generalización a los polinomiosEste algoritmo sólo precisa de la división euclidiana, y por consiguiente se extiende a todos los dominios donde existe tal división: es el caso de las álgebras de polinomios, como Q[X] o R[X], (polinomios con coeficientes racionales o reales). Obviamente, los cálculos se vuelven mucho más largos. Sea como resolver una ecuación de tercer grado no es evidente, para hallar la raíz múltiple empleamos la propiedad que dice las raíces múltiples son las en común entre el polinomio y su polinomio derivado.
El polinomio derivado de P es Tomemos entonces
En efecto: El contenido de este artículo incorpora material de una entrada de la Enciclopedia Libre Universal, publicada en castellano bajo la licencia GFDL.
|