Page 1

Tema 2 2.3.

Factorizaci´ on de n´ umeros enteros

A diferencia del problema de determinar la primalidad, para el problema de factorizar n´ umeros enteros no se conocen algoritmos de complejidad polinomial. Este hecho, sin embargo, es la fuente de seguridad de sistemas de criptograf´ıa de clave p´ ublica como el RSA (iniciales de Rivest-ShamirAdleman), en el que el eventual receptor de mensajes cifrados publica una clave formada por un m´odulo que es producto de dos primos, y cualquiera que conozca esos dos n´ umeros podr´ıa romper el sistema. Sin embargo, a pesar de que no se conocen algoritmos polinomiales, la familia de m´etodos para factorizar enteros va mucho m´as all´a del m´etodo de las divisiones sucesivas. Existen m´etodos de b´ usqueda aleatoria llamados de Montecarlo, como el m´etodo rho y el de las bases de factores, y otros de b´ usqueda exhaustiva como el de Fermat. Todo n´ umero entero (o polinomio con coeficientes en un cuerpo) es producto de un n´ umero finito de factores irreducibles. Factorizarlo consiste en encontrar una descomposici´on como producto de estos factores. Dicha descomposici´on es u ´nica salvo cambio de orden de los factores o producto por unidades, pero siempre consta de un n´ umero finito de factores. Este hecho permite reducir el problema de la factorizaci´on al de, dado un entero no primo o un polinomio no irreducible, encontrar un factor no trivial de ese entero o polinomio, puesto que rep`ıtiendo este paso un n´ umero finito de veces se obtiene la factorizaci´on buscada.

2.3.1.

M´ etodos cl´ asicos

El primero de los m´etodos de factorizaci´on de enteros es el de las divisiones sucesivas, que ha sido estudiado anteriormente tambi´en como test de primalidad. El m´etodo de divisiones sucesivas es un m´etodo exhaustivo de b´ usqueda de factores. Existen otras formas de buscar factores no triviales, que esencialmente hacen la b´ usqueda siguiendo otro orden. Uno de estos


54

Tema 2 Algoritmos en los n´ umeros enteros

m´etodos es el de Fermat, basado en la identidad n = (s + r)(s − r) = s2 − r2 . 2.3.2 Proposici´ on. Sea n un entero positivo impar. Entonces las correspondencias { (a, b) ∈ Z2 / a ≥ b > 0, n = a · b } (a, b) (s + r, s − r)

→ ←

{ (r, s) ∈ Z2 / s > r ≥ 0, n = s2 − r2 } , a+b ) ( a−b 2 2 (r, s)

son aplicaciones una inversa de la otra, y por lo tanto son biyectivas. Demostraci´ on. Dado que a ≥ b y que b > 0, se tiene respectivamente que a−b ≥ 0 y que a+b > a−b . Adem´as, como n = a · b es impar, tanto a como b 2 2 2 son impares, y los racionales a+b y a−b son enteros. De esto y de la identidad 2 2 (

a+b 2 a − b 2 a2 + 2ab + b2 − a2 + 2ab − b2 ) −( ) = =a·b=n 2 2 4

se sigue que la primera de las correspondencia es una aplicaci´on. Por otro lado, si 0 ≤ r < s, entonces s + r ≥ s − r y ambos son enteros positivos. Adem´as (s + r)(s − r) = s2 − r2 = n, con lo que la segunda correspondencia tambi´en es una aplicaci´on. Para ver que una es la inversa de la otra, n´otese que (

a+b a−b a+b a−b + , − ) = (a, b) 2 2 2 2

y que (

(s + r) − (s − r) (s + r) + (s − r) , ) = (r, s). 2 2 

El m´etodo de Fermat utiliza este resultado, y en lugar de buscar un factor no trivial de n directamente, busca dos enteros r y s tales que n = s2 − r2 . 2.3.3 Algoritmo. Factorizaci´on de Fermat Input: n entero positivo impar no primo Output:√ Un factor no trivial a de n s := ⌈ n⌉ if n = s2 then a := s else Manolo Garc´ıa Rom´ an, 2005


2.3 Factorizaci´on de n´ umeros enteros

55

m := s2 − n; s := s + 1 while m no es un cuadrado do m := m + 2s + 1; s := s + 1 end while √ a := s + m end if

s.

√ La b´ usqueda se inicia con s = ⌈ n⌉ y contin´ ua con valores crecientes de

Se busca un valor de s tal que s2 − n sea un cuadrado. √ Si n = a · b con a ≥ b > 1, entonces b ≥ 3 y n/3 ≥ a ≥ n ≥ b, y para calcular el u ´ltimo valor de s que testea, √ hay que calcular el m´eximo de la funci´on s(x) = x+n/x en el intervalo [ n, n/3]. Esta funci´on es infinitamente 2 derivable y tiene derivada positiva en todo el intervalo, por lo que el m´aximo lo alcanza en x = n/3. El mayor valor de s que prueba el algoritmo de b´ usqueda de factores es n+9 s(n/3) = 6 . Luego el m´etodo de Fermat hace un n´ umero de ra´ıces cuadradas que es exponencial en el tama˜ no de n, y por lo tanto tiene complejidad exponencial. El m´etodo de factorizaci´on de Euler es un m´etodo exhaustivo que en cierta forma es una generalizaci´on del m´etodo de Fermat. Consiste en poner el n´ umero entero impar y no primo n de dos formas distintas como n = r2 + Ds2 para cierto entero positivo fijo D. Por un lado se tienen las identidades (x2 +Dy 2 )(u2 +Dv 2 ) = (xu+Dyv)2 +D(yu−xv)2 = (xu−Dyv)2 +D(yu+xv)2 , que muestran que el producto de dos enteros de la forma r2 + Ds2 se puede poner tambi´en como un entero de esa forma de al menos dos maneras distintas. Por otro lado se tiene el resultado rec´ıproco, debido a Euler, que garantiza la existencia de un factor no trivial de n cuando se puede poner como r2 +Ds2 de dos maneras distintas: si n = a2 +Db2 = c2 +Dd2 , con (n, bd) = 1, entonces n es producto de dos enteros de la forma x2 + Dy 2 . La construcci´on de los factores no triviales de n, sin embargo, no se hace utilizando la demostraci´on del teorema, sino a trav´es de congruencias no triviales de Legendre: Manolo Garc´ıa Rom´ an, 2005


56

Tema 2 Algoritmos en los n´ umeros enteros

2.3.4 Proposici´ on. Si n â&#x2C6;&#x2C6; Z+ es impar y no primo y n no es potencia de un primo, entonces existen dos enteros z, y tales que (z, n) = (y, n) = 1 y z 2 â&#x2030;Ą y 2 (n) pero z6â&#x2030;Ą Âą y (n). Un par de enteros z, y como ese se denomina una congruencia (no trivial) de Legendre m´odulo n, y los enteros (n, z â&#x2C6;&#x2019; y) y (n, z + y) son ambos factores no triviales de n. Demostraci´ on. Sea p un factor primo de n, sea k â&#x2C6;&#x2C6; Z+ tal que pk |n pero pk+1 6 |n, y sea z â&#x2C6;&#x2C6; Z tal que (z, n) = 1. Si ponemos a = z 2 , entonces las ecuaciones x2 â&#x2030;Ą a (pk ) y x2 â&#x2030;Ą a (n/pk ) tienen al menos dos soluciones cada una, que son x = z y x = â&#x2C6;&#x2019;z, que adem´as son distintas porque si z â&#x2030;Ą â&#x2C6;&#x2019;z (pk ), resp. z â&#x2030;Ą â&#x2C6;&#x2019;z (n/pk ), entonces pk |2z, resp n/pk |2z, y como tanto pk como n/pk son impares (n es impar), se tiene que pk |z, resp n/pk |z, lo que contradice que n y z sean primos entre s´Ĺ. La ecuaci´on x2 â&#x2030;Ą a (n) tiene al menos dos soluciones m´as adem´as de x = z y x = â&#x2C6;&#x2019;z. En efecto, las soluciones dadas por el teorema chino de los restos a los cuatro sistemas de ecuaciones distintos     x â&#x2030;Ą z (pk ) x â&#x2030;Ą â&#x2C6;&#x2019;z (pk ) x â&#x2030;Ą z (pk ) x â&#x2030;Ą â&#x2C6;&#x2019;z (pk ) x â&#x2030;Ą z (n/pk ) x â&#x2030;Ą â&#x2C6;&#x2019;z (n/pk ) x â&#x2030;Ą â&#x2C6;&#x2019;z (n/pk ) x â&#x2030;Ą z (n/pk ) son u ´nicas m´odulo n para cada sistema y son, respectivamente, z, â&#x2C6;&#x2019;z, y y â&#x2C6;&#x2019;y, de manera que z6â&#x2030;Ą Âą y (n) dado que z6â&#x2030;Ą â&#x2C6;&#x2019; y (pk ) y z6â&#x2030;Ąy (n/pk ). Adem´as, (y, n) = 1 ya que (z, n) = 1, e y 2 â&#x2030;Ą z 2 (n) puesto que  y 2 â&#x2030;Ą z 2 (pk ) . y 2 â&#x2030;Ą z 2 (n/pk ) Sean z, y â&#x2C6;&#x2C6; Z cualquier par de enteros tal que (z, n) = (y, n) = 1 y z â&#x2030;Ą y 2 (n) pero z6â&#x2030;Ą Âą y (n). Como consecuencia de esto u ´ltimo tenemos que n no divide ni a z â&#x2C6;&#x2019; y ni a z + y, y por tanto 2

(z â&#x2C6;&#x2019; y, n) < n y (z + y, n) < n. Adem´as, para cualquier factor primo p de n, (z + y)(z â&#x2C6;&#x2019; y) = z 2 â&#x2C6;&#x2019; y 2 â&#x2030;Ą 0 (p), lo que implica que p divide a z + y o a z â&#x2C6;&#x2019; y. Por lo tanto, (z + y, n) > 1 o (z â&#x2C6;&#x2019; y, n) > 1. Si es, por ejemplo 1 < d = (z â&#x2C6;&#x2019; y, n) < n, entonces zâ&#x2C6;&#x2019;y n (z + y) â&#x2030;Ą 0 ( ), d d Manolo Garc´Ĺa Rom´ an, 2005


2.3 Factorizaci´on de n´ umeros enteros

57

z−y n n , ) = 1, esto implica que | (z + y) con n > d, con lo que d d d tamb´ı´en (z + y, n) > 1. 

y como (

El m´etodo de factorizaci´on de Euler es simplemente un algoritmo de b´ usqueda exhaustiva de congruencias de Legendre. El m´etodo consiste en, dado n ∈ Z+ impar y compuesto, y D ∈ Z tal que (D, n) = 1, encontrar dos formas distintas de poner n como n = a2 + Db2 = c2 + Dd2 , con a, b, c, d ∈ Z+ y (bd, n) = 1. Dados a, b, c, d verificando esta identidad, se tiene que a2 d2 ≡ −Db2 d2 ≡ b2 c2 (n), es decir, ad y bc son soluci´on de x2 ≡ y 2 (n). Adem´as constituyen una congruencia no trivial de Legendre m´odulo n, puesto que si ad ≡ ±bc (n), entonces o bien ad = bc, o bien ad = n − bc. En el primer caso se tiene que d2 n = a2 d2 + Db2 d2 = b2 c2 + Db2 d2 = b2 n, lo que no puede ocurrir porque b 6= d. En el segundo caso d2 n = a2 d2 + Db2 d2 = n2 − 2nbc + b2 c2 + Db2 d2 = n2 − 2nbc + b2 n, que tampoco puede ser porque eso implicar´ıa que d2 + c2 = n + (c − b)2 , lo que es s´olo posible cuando D = 1 y b = c. Por lo tanto el par de enteros ad y bc son una congruencia de Legendre m´odulo n, y por la proposici´on tanto (ad+bc, n) como ad−bc, n) son factores no trivales de n. 2 En la pr´actica, para calcular √ a, b, c y d se chequea si n − Dy es un cuadrado, comenzando con y = ⌊ n − D⌋ y luego exhaustivamente con valores de y cada vez m´as peque˜ nos. Muchos autores recomiendan adem´as, al menos en los primeros intentos, probar con valores de D grandes. 2.3.5 Algoritmo. Factorizaci´on de Euler Input: n, entero positivo impar, D < n entero no nulo Output: p Un factor no trivial de n, o nada y = ⌊ n/D⌋ if n = Dy 2 then return y end if Manolo Garc´ıa Rom´ an, 2005


58

Tema 2 Algoritmos en los n´ umeros enteros

y = y − 1; m = n − Dy 2 while m es un cuadrado and y > 0 do m = m − 2Dy + D; y = y − 1 end while if y = 0 then return “Probar con otro valor de D” end √ if a = m; b = y m = m − 2Dy + D; y = y − 1 while m es un cuadrado and y > 0 do m = m − 2Dy + D; y = y − 1 end while if y = 0 then return “Probar con otro valor de D” end√if c = m; d = y return mcd(n, ad − bc) El m´etodo que us´o Euler originalmente buscaba la forma de poner n de dos formas distintas como suma de dos cuadrados (esto es, tomando D = 1). Sin embargo, se sabe que aquellos enteros impares n que cuentan con un divisor primo p de ´ındice impar y tal que p ≡ 3 (4) no se pueden expresar como suma de dos cuadrados. Como a priori no se sabe si n tiene alg´ un factor primo p que verifique esto, ni siquiera cuando n ≡ 1 (4), tampoco se sabe a priori si el m´etodo de Euler con D = 1 ser´a efectivo o no para calcular un factor no trivial. Sin embargo, hasta principios del siglo XX se ten´ıa por uno de los mejores m´etodos para factorizar enteros, resultando m´as efectivo que el de Fermat para enteros que son producto de dos factores no demasiado juntos. Con este m´etodo Euler consigui´o demostrar que el n´ umero 1000009 = 10002 + 32 = 9722 + 2352 = 293 · 3413 no es primo mostrando su factorizaci´on. El m´etodo ρ de Pollard es un m´etodo para, a trav´es de uns sucesi´on aleatoria de n´ umeros enteros, buscar un factor no trivial del entero no primo impar n. Est´a basado en la siguiente propiedad: 2.3.6 Proposici´ on. Sea m ∈ Z y f : Z −→ Z una aplicaci´on tal que si 0 ≤ n < m entonces 0 ≤ f (n) < m. Sea 0 ≤ c < m y consideremos la sucesi´on definida por x1 = c, xi = f (xi−1 ) para i > 1. Entonces: Manolo Garc´ıa Rom´ an, 2005


2.3 Factorizaci´on de n´ umeros enteros

59

1. la sucesi´on (xi )i∈N es finalmente peri´odica, esto es, existen λ, µ ∈ Z+ tales que x1 , . . . , xµ , xµ+1 , . . . , xµ+λ−1 son distintos dos a dos, y xλ+i = xi para todo i ≥ µ. 2. existe k > 0 tal que xk = x2k , y el menor entero k que lo satisface est´a en el intervalo [µ, µ + λ − 1]. Demostraci´ on. Como xi puede tomar a lo sumo m valores distintos, existen µ < η los primeros ´ındices para los que xη = xµ . Pongamos λ = η − µ. Entonces la sucesi´on es peri´odica de periodo λ a partir de xµ . Sea n el menor entero positivo para el que nλ ≥ µ. Entonces k = nλ es un ´ındice de la parte peri´odica de la suceci´on, y como el periodo es λ, para el t´ermino de ´ındice 2k = 2nλ se tiene que x2k = xλ(2n−1) = xλ(2n−2) = · · · = xλ(n+1) = xλn = xk . Si k ′ es otro entero positivo tal que x2k′ = xk′ , entonces el periodo λ divide a k ′ y por tanto k ′ = n′ λ. Como los t´erminos de la sucesi´on anteriores a xµ son distintos a todos los dem´as de la sucesi´on, se tiene que k ′ ≥ µ, y por tanto k ′ ≥ k. 

Sea n ∈ Z+ no primo impar, f : {0, . . . , n − 1} −→ {0, . . . , n − 1} una aplicaci´on y sea (xi )i∈N la sucesi´on dada por xi = f (xi−1 ) para i > 1, con 0 ≤ x0 < n. Consideremos el divisor primo m´as peque˜ no p de n (que a priori no se conoce) y sea 0 ≤ yi < p − 1 tal que yi ≡ xi (p) para todo i. Como hay s´olo n posibles valores distintos para xi , existen λ, µ ∈ Z+ tales que y1 , . . . , yµ , yµ+1 , . . . , yµ+λ−1 son distintos dos a dos, e yi+λ = yi para cada i ≥ µ. Si k, j son ´ındices de manera que yk = yj , entonces xk ≡ xj (p), y si xk 6= xj entonces m.c.d.(xk − xj , n) es un divisor no trivial de n (y un m´ ultiplo de p).

En la pr´actica, para buscar dos ´ındices k y j tales que yk = yj , se pone j = 2k, porque en virtud de la proposici´on anterior existe µ ≤ k < µ + p tal que yk = y2k . 2.3.7 Algoritmo. rho de Pollard Input: n entero positivo no primo, c entero positivo menor que n. Output: m factor no trivial de n o “no se ha conseguido un factor usando la semilla c” x := c; z := x2 + 1 Mod n Manolo Garc´ıa Rom´ an, 2005


60

Tema 2 Algoritmos en los n´ umeros enteros

m := mcd(z − x, n) while m = 1 and x <> z do x := x2 + 1 Mod n z := z 4 + 2z 2 + 2 Mod n m := mcd(z − x, n) end while if z = x then return “no se ha conseguido un factor usando la semilla c” end if La aplicaci´on f que se usa para generar la sucesi´on (xi )i≥1 debe ser lo suficientemente aleatoria y f´acil de evaluar para minimizar el tiempo de ejecuci´on. Normalmente se elije la funci´on polin´omica f (x) = x2 + 1, reduciendo luego el resultado m´odulo n. El m´etodo ρ de Pollard no siempre proporciona un factor no trivial de n. En general, que (x2k − xk , n) sea mayor que 1 no es garant´ıa de que sea un factor no trivial de n, pues podr´ıa coincidir con n. Dada la forma en que se construye la sucesi´on, esto ocurre s´olo cuando x2k = xk . Si la funci´on que genera la sucesi´on es f (x) = x2 + 1Modn, entonces xi+1 ≡ x2i + 1 (p), para cualquier divisor primo p de n, con lo que xi+1 − 1 es un resto cuadr´atico m´odulo p o cero para todo i. Como s´olo existen (p − 1)/2 restos cuadr´aticos m´odulo p, se tiene que xi s´olo puede tomar (p+1)/2 valores distintos m´odulo p, para cualquier divisor primo p de n. 2.3.8 Proposici´ on. Sea S = {0, . . . , m − 1} y para cada aplicaci´on f : S → S y cada semilla x0 ∈ S consideremos la sucesi´on √ dada por xi = f (xi−1 ) para + i ≥ 1. Sea tambi´en λ ∈ R y pongamos l = 1 + ⌊ 2λm⌋. Entonces la proporci´on de pares (f, x0 ) para los que x0 , . . . , xl son distintos dos a dos es menor que e−λ . Demostraci´ on. El n´ umero total de pares (f, x0 ) posibles es mm+1 , porque hay m posibles valores para x0 y existen mm aplicaciones f : S → S distintas. El n´ umero de pares (f, x0 ) para los que x0 , . . . , xl son distintos es m

m−l

l Y (m − j), j=0

porque hay m posibilidades para x0 , m − 1 posibilidades para f (x0 ) = x1 , y as´ı hasta m − l posibilidades para f (xl−1 ) = xl , y luego m posibilidades para las im´agenes por f de los restantes m − l elementos de S. Manolo Garc´ıa Rom´ an, 2005


2.3 Factorizaci´on de n´ umeros enteros

61

Por lo tanto la proporci´on es Q l l Y Y mm−l lj=0 (m − j) j −1−l P = =m (m − j) = (1 − ). m+1 m m j=0 j=0 Dado que log (1 − x) ≤ −x para 0 ≤ x < 1, el logaritmo de esta proporci´on se puede acotar por: l X

l

X j l(l + 1) j log P = < −l2 /(2m), log (1 − ) ≤ − =− m m 2m j=0 j=0 √ √ y como l = 1 + ⌊ 2λm⌋ > 2λm, se obtiene que √ 2 2λm log P < − = −λ. 2m  2.3.9 Proposici´ on. Sea n ∈ Z+ impar y no primo y λ ∈ R+ . Construyendo la sucesi´on (xi )i>0 a partir de una semilla 0 ≤ x0 < n tomada al azar y una aplicaci´on f : {0, . . . , n − 1} → {0, . . . , n − 1} elegida aleatoriamente, el m´etodo ρ de Pollard tiene una complejidad √ tρ (n) = O(L2 (n)2 n1/4 λ) con probabilidad 1 − e−λ .

√ Demostraci´ on. Sea m el menor divisor no trivial de n. Entonces m ≤ n. El n´ umero de pasos del algoritmo es k tal que xk ≡ x2k (m). Este k es tal que µ ≤ kη, siendo x0 , x1 , . . . , xµ , xµ+1 , . . . , xη−1

todo distintos m´odulo m. Por la proposici´on anterior, la probabilidad de elegir aleatoriamente una semilla x0 y una funci´on generatriz de la sucesi´on f de manera que η < 1 + √ ⌊ 2λm⌋ es 1 − e−λ . En ese caso, dado que en cada paso las multiplicaciones, divisiones y m´aximo com´ un divisor es entre enteros menores que n2 , se tiene que tρ (n) = O(L2 (n)2 + kL2 (n)2 ), √ √ √ y por ser k < η ≤ 1 + 2λ m ≤ 1 + 2λn1/4 , √ tρ (n) = O(L2 (n)2 λn1/4 ).  Manolo Garc´ıa Rom´ an, 2005


62

2.3.10.

Tema 2 Algoritmos en los n´ umeros enteros

M´ etodos de cribado

El m´etodo de la base de factores, tambi´en llamado de criba racional, es un m´etodo para factorizar enteros. Es un m´etodo de la familia de los llamados m´etodos de criba de cuerpos de n´ umeros, que son de los m´as utilizados entre los que se conocen para factorizar enteros muy grandes. Sea n un n´ umero impar y no primo con al menos dos factores primos distintos. Para descartar que n se la potencia de un n´ umero primo, se emplea el test de potencia perfecta, que trata de buscar una base m y un exponente usqueda del exponente es b enteros y mayores que 1 tales que n = mb . La b´ exhaustiva, mientras que la de la base se hace por bisecci´on. 2.3.11 Algoritmo. pwrtest Input: n ≥ 2 Output: a, b ≥ 2 tal que n = ab o ”n no es una potencia perfecta´´ b := 2 while 2 < n do a := 1; c := n while c − a ≥ 2 do m := (a + c)/2) p := m´ın{mb , n + 1} /* exponenciaci´on r´apida truncada if p = n then return m, b end if if p < n then a := m else c := m end if end while b := b + 1 end while return ”n no es una potencia perfecta´´ La comprobaci´on de la identidad n = mb se hace calculando primero p = m´ın{mb , n + 1} mediante exponenciaci´on r´apida truncada, y luego se comprueba si n = p. El algoritmo de exponenciaci´on Q r´apida se aborta desde j 2j que o bien la potencia m o bien el producto parcial i = 0j (m2 )ei supera a n para alg´ un j durante el c´alculo. Dado que el n´ umero de multiplicaciones en el algoritmo de exponenciaci´on Manolo Garc´ıa Rom´ an, 2005


2.3 Factorizaci´on de n´ umeros enteros

63

r´apida truncada es a lo sumo 2 log2 L2 (k) y los enteros que se multiplican nunca superan a k, su complejidad es ttruncexp (a, b, k) = O(log2 k log log k). 2.3.12 Algoritmo. truncexp Input: a, b ≥ 2, k ∈ Z+ Output: m´ın{ab , k}. d := a, c := 1 while b > 0 do e := b Div 2 if b > 2e then c := c · d end if d := d · d if c > k or d > k then return k end if b := e end while return c La complejidad del test de potencia perfecta es tpwrtest (n) = O(log4 n log log n).

El m´etodo de las bases de factores es un m´etodo para buscar una congruencia de Legendre no trivial m´odulo n, es decir, un par de enteros a y b tales que a2 ≡ b2 (n) y a6≡ ± b (n). Sabemos que una vez obtenidos a y b, tanto el m´aximo com´ un divisor (n, a − b), como (n, a − b), son factores no triviales de n. Dado a ∈ Z, denotemos por a mod n al resto m´ınimo de a m´odulo n, esto es, al u ´nico entero r ∈ {(−n + 1)/2, . . . , (n − 1)/2} tal que a ≡ r (n). 2.3.13 Definici´ on. Una base de factores es un conjunto finito donde cada elemento es o bien un n´ umero primo positivo o bien −1. Si B = {p1 , p2 , . . . , ph } es una base de factores, se dice que el entero b es un B-n´ umero si existen r1 , . . . , rh tales que b2 mod n = pr11 · · · prhh . Manolo Garc´ıa Rom´ an, 2005


64

Tema 2 Algoritmos en los n´ umeros enteros

Sea B = {p1 , . . . , ph } una base de factores y consideremos el cuerpo de dos elementos Z2 . Sea f la aplicaci´on f : {b : b es un B − n´ umero} −→ Z2 h b → (r1 , . . . , rh ) , siendo b2 mod n = pr11 · · · prhh . P umeros tales que ki=1 f (bi ) = (0, . . . , 0) y denotamos Si b1 , . . . , bk son B-n´ P b2i mod n = pr1i1 · · · prhih , entonces ki=1 rij es un n´ umero par para 1 ≤ j ≤ h. Podemos considerar los enteros b=

k Y i=1

bi

y

a=

h Y

Pk

pi

i=1 rij /2

.

j=1

Entonces a2 ≡ b2 (n), por lo que si a6≡ ± b (n), tenemos una congruencia de Legendre m´odulo n y autom´aticamente dos factores no triviales de n. Respecto a este m´etodo es necesario hacer las siguientes consideraciones: 1. Aunque la forma de construir a es completamente distinta de la de obtener b, este m´etodo no garantiza que a6≡ ± b (n). En cualquier caso, si n tiene r factores primos distintos (pongamos n = q1s1 · · · qrsr ), entonces la ecuaci´on x2 ≡ b2 (n) tiene al menos 2r soluciones distintas, que son las soluciones que da el teorema chino de los restos para cada uno de los 2r sistemas  x ≡ (−1)e1 b (q1s1 )   .. e1 , . . . , er ∈ {0, 1}. .  er sr  x ≡ (−1) b (qr )

Como las maneras en que se construyen a y b son lo suficientemente diferentes como para poder asumir que a es una soluci´on de x2 ≡ b2 (n) elegida aleatoriamente, la probabilidad de que sea a ≡ ±b (n) es a lo sumo 2/2r = 21−r ≤ 1/2, puesto que r ≥ 2. p 2. Si b es un B-n´ umero y b ≤ (n − 1)/2, entonces f (b) = (0, . . . , 0). p En efecto, como b ≤ (n − 1)/2 tenemos que b2 mod n = b2 , y por lo tanto todos los exponentes en b2 mod n = pr11 · · · prhh son pares. Luego, a la hora de buscar B-n´ umeros b1 , . . . , bp etodo de las k para el m´ bases de factores, los buscaremos mayores que n/2. Manolo Garc´ıa Rom´ an, 2005


2.3 Factorizaci´on de n´ umeros enteros

65

3. Si B es un base de factores con h elementos, el n´ umero de B-n´ umeros {b′1 , . . . , b′r } que tenemos que buscar para conseguir que la suma de las Pk im´agenes de una parte de ellos i=1 f (bi ) sea 0 es a lo sumo r = h + 1. En efecto, el conjunto de vectores {f (b′i )}1≤i≤r ⊆ Z2 h no es un sistema libre para r > h, y los escalares en cualquier combinaci´on lineal de esos vectores son o bien 0 o bien 1. P Dada una combinaci´on lineal ri=1 ai f (b′i ) = 0 con ai ∈ Z2 no todos P nulos, para obtener el subconjunto {b1 , . . . , bk } tal que ki=1 f (bi ) = 0 se consideran s´olo los b′i tales que ai 6= 0 (y por lo tanto ai = 1). umeros b1 , . . . , bh+1 Para calcular la base de factores B = {p1 , . . . ph y los B-n´ se puede optar por al menos dos caminos: 1. Poner B = {−1} ∪ {2, 3, 5, . . . , ph−1 } (los primeros h − 1 primos positivos) y luego generar n´ umeros al azar y comprobar si son o no B-n´ umeros. no en valor absoluto 2. Elegir b1 , . . . , bt de manera que b2i mod √ n sea peque˜ (por eligiendo, enteros cercanos a sn, con s entero peque˜ no), y luego 2 factorizar bi mod n para cada i y poner B como el conjunto de todos los factores. Una vez se han calculado al menos h + 1 B-n´ umeros {b′1 , . . . , b′r }, para decidir cuales de ellos se consideran para Pk construir a y b (o sea, para extraer un subconjunto {b1 , . . . , bk } tal que i=1 f (bi ) = 0), basta con resolver el sistema lineal homog´eneo con coeficientes en Z2    x 1 ↑ ↑ ..  = 0.  f (b′1 ) · · · f (b′r )    .  ↓ ↓ xr Si (x1 , . . . , xr ) ∈ Z2 r es una soluci´on, entonces seleccionaremos el conjunto {b1 , . . . , bk } = { b′i : xi 6= 0 }, y si resulta que a ≡ ±b (n), podemos probar con otra soluci´on (x1 , . . . , xr ) y repetir la construcci´on de a y b. 2.3.14 Algoritmo. basefact Input: n entero positivo no con al menos dos factores primos distintos. Output: m factor no trivial de n o nada. Manolo Garc´ıa Rom´ an, 2005


66

Tema 2 Algoritmos en los n´ umeros enteros

Elegir y peque˜ no (por ejemplo y = log n) y poner B = {−1} ∪ {p : p primo , p ≤ y} Si B = {p1 , . .p . , ph }, buscar de manera aleatoria h+1 B-n´ umeros b′1 , . . . , b′h+1 mayores que n/2 (menores que n) Calcular los vectores f (b′i ) Buscar, utilizando eliminaci´on gausiana, una soluci´on no trivial del sistema    x1 ↑ ↑ .   f (b′1 ) · · · f (b′h+1 )    ..  = 0 ↓ ↓ xh+1 Seleccionar el conjunto de B-n´ umeros {b1 , . . . , bk } = {b′i : xi 6= 0} Si (bi )2 mod n = pr1i1 · · · prhih para 1 ≤ i ≤ k, construir b = Pk Q r /2 a = hj=1 pj i=1 ij if a6≡ ± b (n) then m = (a − b, n) else “no se ha conseguido un factor” end if

Manolo Garc´ıa Rom´ an, 2005

Qk

i=1 bi

y


Tema 2- Factorización de números enteros  

Métodos elementales de factorización de numeros enteros

Read more
Read more
Similar to
Popular now
Just for you