Algoritmos en teor´ıa de nu´meros IIC2283 IIC2283 – Algoritmosenteor´ıadenu´meros 1/92 Para recordar: aritm´etica modular Dados dos nu´meros a,b ∈Z, si b >0 entonces existen α,β ∈Z tales que 0≤β <b y a = α·b+β Adem´as, estos nu´meros α, β son u´nicos β es llamado el resto de la divisi´on entera entre a y b, y es denotado como amodb (cid:73) Por ejemplo, 8mod3=2, 9mod3=0 y (−8)mod3=1 IIC2283 – Algoritmosenteor´ıadenu´meros 2/92 Para recordar: aritm´etica modular Definicio´n b ≡cmodn si n divide a (c −b) Usamos la notaci´on n|m para indicar que n divide a m (cid:73) b ≡cmodn si n|(c −b) IIC2283 – Algoritmosenteor´ıadenu´meros 3/92 Ejercicios 1. Demuestre la proposicio´n 2. Demuestre que un nu´mero n es divisible por 3 si y so´lo si la suma de sus d´ıgitos es divisible por 3 Para recordar: algunas propiedades b´asicas Proposici´on 1. a≡bmodn si y so´lo si amodn=bmodn 2. a≡(amodn)modn 3. Si a≡bmodn y c ≡dmodn, entonces: (a+c) ≡ (b+d) modn (a·c) ≡ (b·d) modn IIC2283 – Algoritmosenteor´ıadenu´meros 4/92 Para recordar: algunas propiedades b´asicas Proposici´on 1. a≡bmodn si y so´lo si amodn=bmodn 2. a≡(amodn)modn 3. Si a≡bmodn y c ≡dmodn, entonces: (a+c) ≡ (b+d) modn (a·c) ≡ (b·d) modn Ejercicios 1. Demuestre la proposicio´n 2. Demuestre que un nu´mero n es divisible por 3 si y so´lo si la suma de sus d´ıgitos es divisible por 3 IIC2283 – Algoritmosenteor´ıadenu´meros 4/92 Algoritmos b´asicos en teor´ıa de nu´meros Vamos a estudiar tres algoritmos fundamentales en el ´area: (cid:73) Exponenciaci´on r´apida (cid:73) El algoritmo de Euclides para el c´alculo del m´aximo comu´n divisor (cid:73) El algoritmo de Euclides extendido y el c´alculo del inverso modular IIC2283 – Algoritmosenteor´ıadenu´meros 5/92 Exponenciaci´on r´apida: calculando ab modn Utilizamos el siguiente algoritmo para calcular abmodn, el cual es llamado exponenciaci´on r´apida: EXP(a, b, n) if b =1 then return amodn else if b es par then val:=EXP(a,b,n) 2 return (val·val)modn else val:=EXP(a,b−1,n) 2 return (val·val·a)modn IIC2283 – Algoritmosenteor´ıadenu´meros 6/92 La complejidad de EXP Ejercicio Considerando la multiplicaci´on de enteros y el c´alculo de la funci´on xmody como las operaciones b´asicas a contar, demuestre que EXP(a, b, n) en el peor caso es O(log (b)) 2 IIC2283 – Algoritmosenteor´ıadenu´meros 7/92 Proposici´on Si b >0, entonces MCD(a,b)=MCD(b,amodb) Demostraci´on: Vamos a demostrar que un nu´mero c divide a a y b si y s´olo si c divide a b y amodb (cid:73) De esto se concluye que MCD(a,b)=MCD(b,amodb) M´aximo comu´n divisor Sea MCD(a,b) el m´aximo comu´n divisor de los nu´meros a y b (cid:73) ¿C´omo podemos calcular MCD(a,b)? IIC2283 – Algoritmosenteor´ıadenu´meros 8/92 Demostraci´on: Vamos a demostrar que un nu´mero c divide a a y b si y s´olo si c divide a b y amodb (cid:73) De esto se concluye que MCD(a,b)=MCD(b,amodb) M´aximo comu´n divisor Sea MCD(a,b) el m´aximo comu´n divisor de los nu´meros a y b (cid:73) ¿C´omo podemos calcular MCD(a,b)? Proposici´on Si b >0, entonces MCD(a,b)=MCD(b,amodb) IIC2283 – Algoritmosenteor´ıadenu´meros 8/92
Description: