Cálculos del Máximo Común Divisor
ALGORITMO DE EUCLIDES
Ejemplo: mcd(320,296) 320 = 276 ·1 + 44 276 = 44 ·6 + 12
44
= 12 ·3 +
8
12
=
8
·1 +
4
8
=
4
·2 +
0
Empieza dividiendo dos números. Escribiendo el resultado de la forma a = bq + r a>b, 0<=r
Ejecutar hasta que el resto sea igual a cero. El último resto no-cero es el mcd. En este caso, (320, 296) = 4.
Ejemplo: mcd(346, 592)= 2 592 = 346 ·1 + 246 346 = 246 ·1 + 100
246 = 100 ·2 + 46 100 = 46 ·2 +
8
46
=
8
·5 +
6
8
=
6
·1 +
2
6
=
2
·3 +
0
Ejercicios •
MCD(4864, 3458) = 38
•
MCD(54, 240)
= 6
•
MCD(674, 308)
= 2
ALGORITMO EXTENDIDO DE EUCLIDES
Algoritmo Extendido de Euclides •
Teorema de Bézout –
–
–
Dados dos enteros positivos a y b con d=mcd(a,b), existen enteros x, y tal que a x + by = d Por ejemplo: mcd(324, 148) = 4, retornado 324 · 16 + 148 · (-35) = 4. ¿Cómo se encuentran los valores de x, y?
Usando el Algoritmo de Euclides •
Se usa el algoritmo de Euclides para obtener los valores de x, y.
•
Pasos: 1. Calcule el algoritmo de euclides 2. Despeje los restos (excepto para el último resto)
324 = 148 ·2 + 28
28
= 324 +(-2)· 148
148 = 28 ·5 +
8
8
= 148 +(-5)· 28
28
=
8
·3 +
4
4
= 28 +(-3)·
8
=
4
·2 +
0
8
Paso 3. Sustitución •
Encontrar los valores de X, Y tal que 4 = x · 148 + y · 324.
•
•
En el lenguaje de álgebra lineal, queremos expresar 4 como una “combinación linear” de 148 y 324. Note que la última ecuación tiene una combinación linear de 28 y 8, que no es lo que queremos. 4
= 28 +(-3)·
8
Paso 3. Sustitución •
•
Entonces que hacemos? Use la ecuación previa para substituir en la ecuación de “combinación linear”. Simplificamos la ecuación, pero sólo de los números que están fuera en las cajas. 4
= 28 +(-3)·
8
4
= 28 +(-3)· ( 148 +(-5)· 28 )
4
= 16 · 28 +(-3)· 148
Paso 3. Sustitución •
Tenemos ahora 4
•
•
= 16 · 28 +(-3)· 148
Que expresa 4 cómo una combinación linear de 28 y 148. Continua sustituyendo, en cada paso con la ecuación previa.
Paso 3. Sustitución
•
4
= 16 · 28 +(-3)· 148
4
= 16 · ( 324 +(-2)· 148 ) +(-3)· 148
4
= 16 · 324 +(-35)· 148
Finalmente tenemos los valores de x, y. Garantizando el teorema de Bézout.
Ejercicio •
•
Use el algoritmo de Euclides para calcular (15, 36) = 3. Exprese 3 como una combinación linear de 15 y 36 = 15 x + 36y . –
3 = 15 · 5 + 36 · (-2)
IMPLEMENTACION DEL ALGORITMO DE EUCLIDES
Básico •
integer euclid(m, n) x = m, y = n
while( y > 0) r = x mod y x = y y = r // I = I + 1!cálculo de interacciones! return x •
¿Cuántas interacciones se necesitan para terminar el proceso?
Algunas propiedades del algoritmo de Euclides Propiedades binarias: i. Si “ x” , “y” son ambos pares, entonces a. MCD(x, y) = 2 MCD(x/2, y/2); ii. Si “ x” es par, “y” es impar, entonces a. MCD(x, y) = MCD(x/2, y);
b. MCD(x,y) = MCD(x-y, y). •
iii. Si “ x” , “y” son ambos impares, entonces x-y es par y | x-y| < max(x, y).
Algoritmo MCD binario • •
Entrada: x, y enteros positivos tales que x > y. Salida: w = MCD(x, y). 1. for (k = 0; u, v ambos pares; k++) { u /= 2; v /= 2; }; /* [Encuentra potencia de 2] (bitwise) */ 2. [Inicializa] if (x is odd) t =-v else t = x; 3. [bisecta t] while (t is even) t /= 2; 4. if (t > 0) x = t else y = -t; 5. [Substrae] t = x-y. If t ≠ 0 go back to 3, otherwise output w = u2k.
Algoritmo MCD binario •
Encuentre el MCD de x =40902, y = 24140
Algoritmo del Mínimo Resto •
Podemos acelerar la convergencia cuando en alguna división r > b/2. P1 Leer a y b
P2
r = resto de dividir a entre b
P3
si r = 0 entonces mcd(a, b) = b FIN
P4
si r > b/2 entonces a = b, b = b − r
P5
si no, entonces a = b, b = r
P6 ir al Paso 2
Algoritmo del Mínimo Resto •
MCD(21,13)
Algoritmo Extendido de Euclides
Algoritmo Extendido de Euclides •
Encuentre los Benzout para a=1769 y b=551
EJERCICIOS PRESENTACIÓN ESCRITA (INDIVIDUAL) 05/09/2016
•
•
Encontrar todas las soluciones enteras de x,y para –
1234x + 5678y=910
–
19201x + 3587y=d
–
5280x + 3600y=d
Cifrado Affin: Explique su respuesta. –
–
Cifre el mensaje “inversa” con claves a=5 y b=9.
Alicia usa la siguiente función para enviar el mensaje “comenow” a Bob: E(x) = 21x + 7
IMPLEMENTACION Y ANALISIS DE CODIGO 19/09/2016
• • • • • • •
Algoritmo MCD binario Algoritmo de Euclides con Menor Resto Algoritmo LSBGDC(left-shift binary algorithm ) Algoritmo del mcd de Lehmer Algoritmo Extendido de Euclides Algoritmo MCD binario extendido Referencias: –
–
Cálculo del máximo común divisor:¿Porqué no se usa el algoritmo de Euclides?. Walter Mora F. Revista digital Matemática, Educación e Internet. Vol. 10, No 2. Marzo 2010. Handbook of Applied Cryptography . (Cap 2.4.2 y 14.4) http://cacr.uwaterloo.ca/hac/