• No se han encontrado resultados

Algoritmo de Euclides y ecuaciones de congruencia

N/A
N/A
Protected

Academic year: 2021

Share "Algoritmo de Euclides y ecuaciones de congruencia"

Copied!
22
0
0

Texto completo

(1)

Algoritmo de Euclides y ecuaciones de congruencia

Taller de ´Algebra I

(2)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siq yr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(3)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siq yr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(4)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siqyr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r)

Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(5)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siqyr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(6)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siqyr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(7)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siqyr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(8)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siqyr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(9)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siqyr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(10)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siqyr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(11)

Algoritmo de Euclides

Elalgoritmo de Euclidescalcula el m´aximo com´un divisor entre dos n´umerosa,b∈Z.

Se basa en que sia,b∈Zyk∈Zes un n´umero cualquiera, entonces (a : b) = (a+kb : b)

Siqyr son el cociente y el resto de la divisi´on deaporb, tenemosa=qb+r, entonces

a−qb=r. Por lo tanto,

(a : b) = (a−qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (30 : 48):

1 (30 : 48) — Dividimos 30 por 48,q= 0,r= 30 2 = (48 : 30) — Dividimos 48 por 30,q= 1,r= 18 3 = (30 : 18) —q= 1,r= 12 4 = (18 : 12) —q= 1,r= 6 5 = (12 : 6) —q= 2,r= 0 6 = (6 : 0) 7 = 6

(12)

Algoritmo de Euclides: Ejercicios

Ejercicios

1 Programar la funci´on

mcd :: Integer -> Integer -> Integer

que calcule el m´aximo com´un divisor entre dos n´umeros utilizando el algoritmo de Euclides.

mcd a b debe funcionar siempre que a >0,b≥ 0.

2 Pensar otro algoritmo para calcular el m´aximo com´un divisor modificando la funci´on

menorDivisor programada en clases anteriores.

3 Comparar el tiempo que tardan ambos programas para n´umeros peque˜nos y n´umeros grandes (por ejemplo, n´umeros de 10 d´ıgitos).

(13)

Algoritmo de Euclides extendido

Dados n´umerosa,b∈Z, existen enteross,ttales que

sa+tb= (a : b).

Ejemplos

I (8 : 5) = 1 y 2·8−3·5 = 1

I (9 : 15) = 3 y 2·9−1·15 = 3

Los valores des,tse pueden obtener con la versi´on extendida del algoritmo de Euclides. Por algoritmo de divisi´on:

a=bq+r (1)

y sabemos que (a : b) = (b : r) =g.

Si tenemoss1,t1tales ques1b+t1r=g, ¿c´omo obtenemoss yt? Multiplicamos (1) port1: t1a=t1bq+t1r y reemplazamos la expresi´on det1r: t1a=t1bq+ (g−s1b) Obtenemos t1a+ (s1−t1q)b=g Es decir,s=t1yt= (s1−t1q).

(14)

Algoritmo de Euclides extendido

Dados n´umerosa,b∈Z, existen enteross,ttales que

sa+tb= (a : b).

Ejemplos

I (8 : 5) = 1 y 2·8−3·5 = 1

I (9 : 15) = 3 y 2·9−1·15 = 3

Los valores des,t se pueden obtener con la versi´on extendida del algoritmo de Euclides. Por algoritmo de divisi´on:

a=bq+r (1)

y sabemos que (a : b) = (b : r) =g.

Si tenemoss1,t1tales ques1b+t1r =g, ¿c´omo obtenemoss yt?

Multiplicamos (1) port1: t1a=t1bq+t1r y reemplazamos la expresi´on det1r: t1a=t1bq+ (g−s1b) Obtenemos t1a+ (s1−t1q)b=g Es decir,s=t1yt= (s1−t1q).

(15)

Algoritmo de Euclides extendido

Dados n´umerosa,b∈Z, existen enteross,ttales que

sa+tb= (a : b).

Ejemplos

I (8 : 5) = 1 y 2·8−3·5 = 1

I (9 : 15) = 3 y 2·9−1·15 = 3

Los valores des,t se pueden obtener con la versi´on extendida del algoritmo de Euclides. Por algoritmo de divisi´on:

a=bq+r (1)

y sabemos que (a : b) = (b : r) =g.

Si tenemoss1,t1tales ques1b+t1r =g, ¿c´omo obtenemoss yt? Multiplicamos (1) port1: t1a=t1bq+t1r y reemplazamos la expresi´on det1r: t1a=t1bq+ (g−s1b) Obtenemos t1a+ (s1−t1q)b=g Es decir,s=t1yt= (s1−t1q).

(16)

Algoritmo extendido de Euclides 1 Programar la funci´on

emcd :: Integer -> Integer -> (Integer, Integer, Integer)

que utilice el algoritmo de Euclides extendido para obtener una 3-upla (g,s,t) tal que

g = (a : b) =sa+tb.

Sugerencia: para acceder a los elementos de la 3-upla, podemos definir las funciones

f s t 3 ( x , _ , _ ) = x s n d 3 ( _ , y , _ ) = y t r d 3 ( _ , _ , z ) = z

Utilizando la funci´on emcd encontrar alguna soluci´on de las ecuaciones diof´anticas 1 29x+ 17y= 1

2 89x+ 23y= 3 3 93x+ 27y= 3

(17)

Ecuaciones de congruencia

Usando el algoritmo extendido de Euclides podemos resolver ecuaciones de congruencia

ax≡b (modm) ¿Cu´ando tiene soluci´on la ecuaci´on?

Recordar que esa ecuaci´on es equivalente a la ecuaci´ondiof´antica

ax+mk=b

Tiene soluci´on si y solo si (a : m) divide ab.

Ejercicios

1 Programar la funci´on

tieneSolucion :: Integer -> Integer -> Integer -> Bool

que dadosa,bymdetermine si la ecuaci´onax≡b(modm) tiene soluci´on. 2 Programar la funci´on

solucionParticular :: Integer -> Integer -> Integer -> Integer

que dadosa,bymdetermine, si existe, un enteroxtal queax≡b (modm). (La funci´on puede quedar indefinida si la ecuaci´on no tiene soluci´on.)

(18)

Ecuaciones de congruencia

Usando el algoritmo extendido de Euclides podemos resolver ecuaciones de congruencia

ax≡b (modm) ¿Cu´ando tiene soluci´on la ecuaci´on?

Recordar que esa ecuaci´on es equivalente a la ecuaci´ondiof´antica

ax+mk=b

Tiene soluci´on si y solo si (a : m) divide ab.

Ejercicios

1 Programar la funci´on

tieneSolucion :: Integer -> Integer -> Integer -> Bool

que dadosa,bymdetermine si la ecuaci´onax≡b(modm) tiene soluci´on. 2 Programar la funci´on

solucionParticular :: Integer -> Integer -> Integer -> Integer

que dadosa,bymdetermine, si existe, un enteroxtal queax≡b (modm). (La funci´on puede quedar indefinida si la ecuaci´on no tiene soluci´on.)

(19)

Ecuaciones de congruencia

Usando el algoritmo extendido de Euclides podemos resolver ecuaciones de congruencia

ax≡b (modm) ¿Cu´ando tiene soluci´on la ecuaci´on?

Recordar que esa ecuaci´on es equivalente a la ecuaci´ondiof´antica

ax+mk=b

Tiene soluci´on si y solo si (a : m) divide ab.

Ejercicios

1 Programar la funci´on

tieneSolucion :: Integer -> Integer -> Integer -> Bool

que dadosa,bymdetermine si la ecuaci´onax≡b(modm) tiene soluci´on. 2 Programar la funci´on

solucionParticular :: Integer -> Integer -> Integer -> Integer

que dadosa,bymdetermine, si existe, un enteroxtal queax≡b (modm). (La funci´on puede quedar indefinida si la ecuaci´on no tiene soluci´on.)

(20)

Ecuaciones de congruencia

Usando el algoritmo extendido de Euclides podemos resolver ecuaciones de congruencia

ax≡b (modm) ¿Cu´ando tiene soluci´on la ecuaci´on?

Recordar que esa ecuaci´on es equivalente a la ecuaci´ondiof´antica

ax+mk=b

Tiene soluci´on si y solo si (a : m) divide ab.

Ejercicios

1 Programar la funci´on

tieneSolucion :: Integer -> Integer -> Integer -> Bool

que dadosa,bymdetermine si la ecuaci´onax≡b (modm) tiene soluci´on. 2 Programar la funci´on

solucionParticular :: Integer -> Integer -> Integer -> Integer

que dadosa,bymdetermine, si existe, un enteroxtal queax≡b (modm). (La funci´on puede quedar indefinida si la ecuaci´on no tiene soluci´on.)

(21)

Soluci´

on general de una ecuaci´

on de congruencia

La soluci´on de la ecuaci´on

ax≡b (modm) es una clase de congruencia.

Por ejemplo, la soluci´on de 3x≡2 (mod 5) esx ≡4 (mod 5). Recordamos de ´Algebra I c´omo resolver una ecuaci´on de congruencia. Ejemplo: 35x ≡15 (mod 20)

1 Calculamos (35 : 20) = 5 y dividimos la ecuaci´on por 5: 7x≡3 (mod 4) (si el mcd no divide ab, la ecuaci´on no tiene soluci´on) 2 Pasamos a ecuaci´on diof´antica 7x+ 4y= 3.

3 Buscamos una soluci´on particular de 7x+ 4y= 1, por ejemplo 7·(−1) + 4·2 = 1. 4 Multiplicamos por 3: 7·(−3) + 4·6 = 3

(22)

Soluci´

on general de una ecuaci´

on de congruencia

Vamos a representar las clases de congruencia por pares ordenados de enteros. El par (a,m) (conm>0) representa todos losx∈Zconx≡a (modm).

Ejercicios

1 Programar la funci´on

solucionGeneral :: Integer -> Integer -> Integer -> (Integer, Integer)

que dadosa,bymdetermine la clase de congruencia soluci´on de la ecuaci´onax≡b

(modm).

Ejemplos

I solucionGeneral 3 2 5 (4, 5) I solucionGeneral 35 15 20 (-3, 4)

Referencias

Documento similar

Posteriormente los nodos que no son baliza pueden calcular sus posiciones tomando como referencia los nodos baliza primarios y secundarios usando la t´ ecnica de trilate- racion,

El objeto de estudio de este trabajo es el estudio e implementación de este como vía de solución, y el campo de acción está dado por los algoritmos de deformación que

Figura 5.9 Comparaci´ on del ranking la mejor soluci´ on encontrada hasta cada iteraci´ on, entre el algoritmo de b´ usqueda y su respectiva b´ usqueda aleatoria, para cada funci´

Conjunto de instrucciones definidas, ordenadas y acotadas para resolver un problema o realizar una tarea, supone el paso previo a ponerse a escribir el código.. Preguntas

Como veremos m´as adelante, este algoritmo funciona bien para funciones objetivo con gran consumo de tiempo de calculo ya que crea una funci ´on sustituta (o ”surrogate”, en ingl´es)

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Podemos deducir de la profundidad de compuertas, que el orden del algoritmo es O(n 2 ) El mejor algoritmo cl´ asico para computar la transformada de Fourier discreta sobre una

Fax Centro Asesor de la Mujer Remitir a Trabajo Social Servicio de Atención. Psicosocial Fax Centro