trabajo fin de grado factorización · pdf filepero en este caso tenemos 1182 13837 =...

54
Urko Nalda Gil José María Pérez Izquierdo Facultad de Ciencias, Estudios Agroalimentarios e Informática Grado en Matemáticas 2013-2014 Título Director/es Facultad Titulación Departamento TRABAJO FIN DE GRADO Curso Académico Factorización Autor/es

Upload: phungtu

Post on 05-Feb-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Urko Nalda Gil

José María Pérez Izquierdo

Facultad de Ciencias, Estudios Agroalimentarios e Informática

Grado en Matemáticas

2013-2014

Título

Director/es

Facultad

Titulación

Departamento

TRABAJO FIN DE GRADO

Curso Académico

Factorización

Autor/es

Page 2: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

© El autor© Universidad de La Rioja, Servicio de Publicaciones, 2014

publicaciones.unirioja.esE-mail: [email protected]

Factorización, trabajo fin de gradode Urko Nalda Gil, dirigido por José María Pérez Izquierdo (publicado por la Universidad

de La Rioja), se difunde bajo una Licencia Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported.

Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a lostitulares del copyright.

Page 3: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Facultad

Facultad de Ciencias, Estudios Agroalimentarios e Informática Titulación

Grado en Matemáticas Título

Factorización Autor/es

Urko Nalda Gil Tutor/es

José María Pérez Izquierdo Departamento

Matemáticas y computación Curso académico

2013-2014

Page 4: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos
Page 5: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

ii

Resumen

A lo largo de este trabajo se hace un repaso general a algunos de los algorimtosde factorizacion de numeros enteros mas destacados, bien sea por su uso actual,o por su importancia historica. En el primer capıtulo se da una introduccionhistorica en la que se repasa parte de la evolucion de la factorizacion de numerosenteros a traves de los anos y que finalmente describe la situacion actual. En elsegundo capıtulo se estudian algoritmos basicos como el algoritmo de Fermat yotros mas complejos como el algoritmo de curvas elıpticas o la criba cuadratica,entre otros.

Abstract

Along this paper we study the most important integer factorization algorithms,either because they are used nowadays or because of their historic importance.In the first chapter an historic introduction is given. There we study howinteger factorization has evolved over the years finishing with a descriptionof the current situation. In the second chapter we study basic algorithmssuch as Fermat’s algorithm and more complex ones such as the elliptic curvesalgorithm or the quadratic sieve.

Page 6: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos
Page 7: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Indice general

1 Historia 1

1.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Primeros algoritmos de factorizacion . . . . . . . . . . . . . . . 2

1.3 Complejidad de la factorizacion . . . . . . . . . . . . . . . . . . 5

1.4 Incorporando las maquinas . . . . . . . . . . . . . . . . . . . . . 6

1.5 Era moderna . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Algoritmos de factorizacion 9

2.1 Algoritmo de Fermat . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2 Mejora de Kraitchik . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3 Algoritmos de John F. Pollard . . . . . . . . . . . . . . . . . . . 13

2.4 Algoritmo de fracciones continuas . . . . . . . . . . . . . . . . . 19

2.5 Curvas elıpticas . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.6 Criba cuadratica . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.7 Criba general del cuerpo de numeros . . . . . . . . . . . . . . . 41

Referencias 45

iv

Page 8: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos
Page 9: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 1

Historia

1.1 Introduccion

Los numeros primos pueden ser considerados como los atomos de la aritmeti-ca. Tal y como los quımicos organizan los elementos quımicos en una tablaperiodica, Eratostenes cerca del siglo 3 a.C. descubrio una forma relativamen-te sencilla de producir una lista de numeros primos hasta un cierto valor. Dela misma manera que todas las moleculas pueden ser reducidas al conjunto deatomos que las forman, lo mismo ocurre con los numeros compuestos.

Desde que aparecieron los primeros interesados en los numeros primos,hubo algunos que se planteaban descomponer numeros compuestos en los fac-tores primos que los forman. La tarea de descomponer numeros en sus factoresprimos se conoce con el nombre de factorizacion.

Aunque la factorizacion de numeros es un tema de gran trascendencia enla teorıa de numeros, es tambien computacionalmente muy costoso.

Algunas de las primeras ayudas en las que se apoyaron los primeros intere-sados en la factorizacion de numeros fueron unas tablas que contenıan los fac-tores primos de numeros compuestos y que se publicaban en las caras traserasde textos matematicos. En 1659 el matematico suizo Johann Rahn publico unatabla con los factores primos de los numeros hasta el 24.000 (salvo aquellosnumeros divisibles por 2 y por 5). Posteriormente, en torno al ano 1668, JohnPell publico una extension de la tabla de Rahn que contenıa la descomposicionde los numeros hasta el 100.000. A finales del siglo XIX ya existıan tablas quecontenıan la descomposicion de los numeros hasta el 10.000.000.

1

Page 10: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

2 1.2. Primeros algoritmos de factorizacion

Para los numeros situados fuera del rango abarcado por las tablas de facto-rizacion se requieren otras tecnicas para la factorizacion de numeros. Existennumerosos algoritmos de factorizacion.

1.2 Primeros algoritmos de factorizacion

1.2.1 Division por tentativa

El algoritmo de division por tentativa (o trial division) es el algoritmo de facto-rizacion de numeros enteros mas sencillo e intuitivo. Actualmente es un metodoque funciona bastante bien y es bastante rapido para gran parte de los nume-ros enteros. De hecho, se ha demostrado que en torno al 88 % de los numerosenteros tienen un factor inferior a 100, mientras que el 92 % tienen un factorinferior a 1000. Por este motivo, muchos de los algoritmos modernos de fac-torizacion comienzan utiliando la division por tentativa. Desafortunadamente,si el numero que queremos factorizar no tiene un factor primo suficientementepequeno, este algoritmo puede ser extremadamente lento.

Notemos que un factor primo de cualquier numero compuesto N puedeser como mucho

√N . Por lo tanto, para factorizar un numero utilizando esta

tecnica, empezaremos comprobando si el primer numero primo p1 divide aN . Si lo hace, almacenaremos dicho factor p1 y volveremos a comprobar si p1divide a N

p1y ası sucesivamente. Cuando nuestro numero primo ya no divida al

numero compuesto, avanzaremos al siguiente numero primo y repetiremos elproceso hasta encontrar todos los factores primos de N. Notar que este metodogarantiza encontrar todos los factores de N , de este modo, si el algoritmo noencuentra ningun factor de N , esto significa que N es un numero primo.

Aunque la division por tentativa es el algoritmo mas sencillo, tambien esel mas costoso en terminos computacionales.

1.2.2 Criba de Eratostenes

Eratostenes (276 a.C. - 194 a.C.) era un cientıfico de la Antigua Grecia queenuncio un sencillo algoritmo para obtener una lista con los numeros primosinferiores a un cierto numero N .

En un primer lugar, se listan todos los numeros desde 2 hasta N y se

Page 11: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 1. Historia 3

procede de la siguiente manera. El primer numero (el 2) debe ser un numeroprimo, por lo que se tachan todos los numeros que sean multiplos de 2. Elsiguiente numero en la lista es el 3 que tambien debe ser primo, nuevamente sedescartan los multiplos de 3. Ası se procede, cuando encontramos un numeroprimo, se eliminan todos los multiplos de ese numero primo y se avanza alsiguiente numero que no haya sido tachado. La iteracion del algoritmo finalizacuando avancemos a un numero primo p tal que p2 > N y en ese momento,todos los numeros que no hayan sido tachados seran numeros primos.

Este algoritmo claramente requiere un gran tamano de memoria y si apli-camos el algoritmo a un numero primo, requerira

√N ciclos para determinar

dicho resultado. No obstante, entrara en juego en uno de los algoritmos maspotentes, la criba cuadratica.

1.2.3 Pierre de Fermat

Pierre de Fermat (1601-1665) fue un matematico frances considerado por mu-chos como el padre de la teorıa de numeros. Aunque sus publicaciones fueronmınimas, escribio numerosas cartas dirigidas a otros matematicos que con-tenıan un gran numero de hallazgos. Su algoritmo para factorizar numeros fueencontrado en una carta sin fecha que probablemente dirigio a Marin Mersenney que se basaba en las siguientes ideas:

1. Si un numero puede ser escrito como la diferencia de dos cuadrados, esdecir N = x2− y2, entonces hemos encontrado una factorizacion sencillade la forma

N = (x+ y)(x− y). (1.1)

2. Por otro lado, si N = ab con b > a entonces x e y pueden ser escritos dela siguiente forma

x =b+ a

2, y =

b− a2

(1.2)

La idea del algoritmo de Fermat radica en encontrar x e y tales que y2 =x2 − n. Para ello se partira de x = b

√N + 1c.1

Ilustraremos el caso con un ejemplo. Supongamos N = 13837, su raız cua-drada se encuentra entre 117 y 118, por lo que partimos de x = 118. El siguientepaso consiste en comprobar si y2 = x2 − N se trata de un numero cuadrado,

1bac representa el mayor numero entero que es menor o igual que a.

Page 12: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

4 1.2. Primeros algoritmos de factorizacion

pero en este caso tenemos 1182 − 13837 = 87, que no es un cuadrado. En estemomento incrementamos x en uno, por lo que x = 119 y repetimos el proceso,y = x2 −N =⇒ y = 1192 − 13837 = 324 = 182. Llegados a este punto, hemosencontrado una factorizacion inicial para N = 13837 = (119 + 18)(119− 18) =137 · 101.

Para encontrar una factorizacion completa de N en numeros primos, de-berıamos reiterar el metodo para los numeros 137 y 101 y sucesivamente a losfactores que aparezcan, hasta tener unicamente factores primos.

Notar que el algoritmo de factorizacion de Fermat funciona realmente biensi los factores de un numero estan cerca de la raız cuadrada del mismo.

1.2.4 Leonhard Euler

Leonhard Euler (1707-1783) fue un matematico suizo que realizo grandes con-tribuciones a un amplio rango de campos de las matematicas como la geometrıaanalıtica, la trigonometrıa, el calculo y la teorıa de numeros. Es consideradocomo uno de los matematicos mas productivos de la historia. El metodo deEuler fue mencionado en una carta dirigida a Christian Goldbach (1690-1764)el 16 de febrero de 1745.

El metodo de Euler se aplica a numeros que pueden ser expresados como lasuma de dos numeros cuadrados. Tambien se asume que N es impar. De estaforma tenemos

N = a2 + b2. (1.3)

Supongamos ahora que N admite una segunda representacion como la sumade dos cuadrados c2 y d2, de esta forma tenemos la expresion

N = a2 + b2 = c2 + d2 =⇒ a2 − c2 = d2 − b2 (1.4)

o lo que es lo mismo

(a+ c)(a− c) = (d+ b)(d− b) (1.5)

Si consideramos ahora

k = mcd(a− c, d− b) =⇒

{a− c = kl

d− b = km(1.6)

Notar que ademas mcd(l,m) = 1 ya que sino k 6= mcd(a − c, d − b). Por lotanto, sustituyendo hora en (5) tenemos (a + c)kl = (d + b)km, simplificandoalcanzamos la expresion

(a+ c)l = (d+ b)m (1.7)

Page 13: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 1. Historia 5

y como l y m son primos entre sı, entonces, por un lado a+ c es divisible porm y por otro d+ b es divisible por l, o lo que es lo mismo

a+ c = mn, d+ b = ln (1.8)

llegando ası a la siguiente expresion

N =

[(k

2

)2

+(n

2

)2](m2 + l2) (1.9)

De este modo, ya hemos encontrado dos factores de N. Finalmente, paracomprobar que este resultado es correcto, realizamos la multiplicacion

N =1

4(k2m2 + k2l2 + n2m2 + n2l2) (1.10)

y por ultimo sustituimos los valores de (6) y de (8)

N =1

4(2a2 + 2b2 + 2c2 + 2d2) =

1

4(2N + 2N) = N (1.11)

1.3 Complejidad de la factorizacion

A pesar de la existencia de estos y otros muchos algoritmos, factorizar fue unatarea muy complicada cuando todo el trabajo se hacıa a mano, no obstantehoy en dıa sigue siendo una tarea compleja y costosa aunque el rango de nume-ros cuya factorizacion se conoce ha crecido notablemente. Con el objetivo deilustrar la dificultad de la que hablamos consideraremos la siguiente anecdota.En octubre de 1903 Frank Nelson Cole, un matematico norteamericano, pre-sento un trabajo titulado “On the factorization of large numbers”. Sin decir unapalabra, se aproximo a la pizarra y escribio el 67o numero primo de Mersenne2,267 − 1 y a continuacion realizo el producto de 193.707.721 · 761.838.257.287.Ambos resultados coincidıan. Cole habıa probado que el 67o numero primo deMersenne no era realmente un numero primo. La audiencia de la Sociedad Ma-tematica Americana, puesta en pie, aplaudio fuertemente a Cole, era la primeravez que un matematico se ganaba tal reconocimiento sin haber pronunciadouna palabra.

2Los numeros primos de Mersenne son aquellos numeros primos de la forma Mn = 2n−1,con n un numero primo.

Page 14: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

6 1.4. Incorporando las maquinas

1.4 Incorporando las maquinas

Varios avances realizados en el siglo XX aceleraron los metodos de factoriza-cion de numeros enteros incorporando procesos mecanizados. En 1896 F.W.Laurence describio una maquina que utilizaba tiras de papel que circulaban alo largo de engranajes con dientes, donde el numero de dientes representabauna exclusion modular y la zona donde el papel era perforado representabaun resto valido. Aunque la maquina de Lawrence nunca llego a construirse,inspiro otros proyectos y maquinas que sı obtuvieron resultados.

En 1910, una traduccion al frances del trabajo de Lawrence fue publicaday poco tiempo despues Maurice Kraitchik construyo una maquina basada enlas ideas de Lawrence.

En torno al ano 1925, las calculadoras mecanicas incluyeron ayudas parala realizacion de multiplicaciones y divisiones. En 1927 Derrick Henry Lehmer,un matematico americano construyo una maquina conocida como bycicle chainsieve. Consistıa en un largo cilindro sobre el cual giraban varias cadenas de bi-cicleta de diferentes longitudes. Cada cadena contenia un dispositivo en uno desus enlaces que, cuando la cadena se situaba en una posicion concreta, cerrabaun circuito. Si todas las cadenas estaban en la misma posicion en el mismomomento, una corriente podıa circular a traves del dispositivo y notificar aloperador que un numero relevante se habıa encontrado. Esta maquina podıaescanear en torno a 50 numeros por segundo y permitio llevar a cabo las dosfactorizaciones siguientes:

1020 + 1 = 73 · 137 · 1.676.321 · 5.964.848.081 (1.12)

y

2.019.210.335.106.439 = 25.709.599 · 78.539.161 (1.13)

En 1932, el propio Lehmer mejoro su maquina construyendo la PhotoelectricNumber Sieve. Este dispositivo permitıa realizar 300.000 pruebas por minuto.Produjo resultados impresionantes incluyendo las dos siguientes factorizacio-nes.

279 − 1 = 2.687 · 202.029.703 · 1.113.491.139.767 (1.14)

y

293 + 1 = 32 · 529.510.939 · 715.827.883 · 2.903.110.321 (1.15)

En esta ocasion, en vez de utilizar cadenas de bicicleta, Lehmer utilizo unosengranajes muy precisos con agujeros que permitıan pasar la luz. Si todos losengranajes se alineaban de una cierta manera, la luz podıa pasar a traves de

Page 15: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 1. Historia 7

los agujeros y se iluminaba un detector que detenıa el dispositivo. El operariopodıa en ese momento rebobinar el dispositivo para ver que valores eran losque habıan alineado los engranajes.

Con la introduccion de las computadoras electronicas, se produjeron nuevosavances en el ambito de la factorizacion. Lehmer descubrio impresionado comodurante un fin de semana el ENIAC producıa 85 nuevos factores de 2k±1 parak < 500. Para comprender lo sorprendentes que eran los resultados, es necesariodestacar que una computadora manual era capaz de encontrar unos pocosfactores en unos pocos meses. Se convirtio en algo comun utilizar el tiempo librede las computadora para tratar de factorizar numeros. Se conservan informesde ingenieros de IBM que reconocıan que estos programas de factorizacion enalgunas ocasiones han detectado problemas de hardware que los tests que serealizaban habitualmente habıan pasado por alto.

1.5 Era moderna

Con la aparicion de la criptografıa de clave publica, el numero de investi-gaciones relacionadas con el campo de la factorizacion de numeros enteroscrecio de forma acelerada. La seguridad de la criptografıa de clave publica de-pende directamente de la dificultad de factorizar numeros enteros y por ello, lacapacidad de factorizar numeros enteros de gran tamano permitirıa romper lamayor parte de mecanismos de cifrado. En la edicion de agosto de 1977 de larevista Scientific American, la columna de Gardner Martin propuso el desafıode factorizar un numero de 129 cifras. En esa epoca se pensaba que dicha tareallevarıa millones de anos de trabajo. En realidad fue factorizado solo 17 anosdespues, en 1994.

Carl Pomerance, un norteamericano nacido en 1944 fue uno de los ma-tematicos que se situo detras de la factorizacion del numero propuesto porMartin. Cuando estaba en el colegio, a Pomerance le propusieron en clase unejercicio que consistıa en hallar los factores del numero 8051 en cinco minutos.Astutamente asumio que habıa algun tipo de truco que permitirıa simplificarel problema e invirtio unos pocos minutos pensando en ello, preocupado por-que el tiempo corrıa, prosiguio tratando de factorizar el numero mediante ladivision por tentativa.3 Obviamente no factorizo el numero a tiempo pero sinembargo, esta anecdota tuvo una fuerte repercusion a largo plazo en la vidade Pomerance. Cuando Pomerance vio el desafıo propuesto por RSA, se plan-

3El truco que habıa supuesto Pomerance existıa, ya que 8051 = 8100−49 = 902−72 quepuede ser factorizado rapidamente utilizando el algoritmo de Fermat.

Page 16: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

8 1.5. Era moderna

teo un modo de atacar el problema y esto desemboco en la aparicion de uno delos algoritmos modernos de factorizacion mas importantes, la criba cuadratica.

Cerca del ano 1970 los metodos mas rapidos para factorizar numeros enteroseran las maquinas cribadoras. No obstante, en aquella epoca ya se sabıa quela potencia de calculo de las computadoras era muy superior, solo necesitabanun algoritmo para factorizar numeros.

La decada de los 70 proporciono varios algoritmos, uno de los primeros fueel que desarrollo Daniel Shank utilizando formas cuadraticas en el algoritmode factorizacion de formas cuadraticas, sin embargo era bastante complejoy difıcil de implementar, pese a ello se utilizo durante varios anos de formasatisfactoria en varias versiones.

John Pollard es un matematico britanico autor del metodo p − 1 en 1974y del metodo ρ solo un ano despues. Ambos metodos estan enfocados a lafactorizacion de los enteros que cumplen una serie de requisitos. Brillhart yMorrison presentaron el primer algoritmo rapido enfocado de forma general atodo tipo de enteros, el algoritmo de factorizacion de fracciones continuas.

Richard Pierce Brent, un matematico norteamericano nacido en 1946, op-timizo el metodo ρ de Pollard en 1980. Poco despues fue cuando Pomeranceinvento el algoritmo de criba cuadratica.

El 31 de agosto de 1988 John Pollard envio una carta a A.M. Odlyzko consendas copias para Richard P. Brent, J. Brillhart, H.W. Lenstra, C.P. Sch-norr y H. Suyama, explicando una idea para factorizar un tipo concreto denumeros basandose en cuerpos algebraicos. Poco despues de que dicha ideafuera implementada, se mejoro para obtener un algoritmo de factorizacion decaracter general conocido como criba general del cuerpo de numeros, obtenien-do ası el algoritmo de factorizacion mas complejo pero tambien el mas rapido.Ha conseguido realizar la factorizacion de numeros compuestos de 512 bits.

Desde que aparecio la criba general del cuerpo de numeros en torno al ano1990 apenas se han desarrollado nuevas ideas y algoritmos, solo optimizacionesde este.

Page 17: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2

Algoritmos de factorizacion

En esta seccion analizaremos algunos de los algoritmos de factorizacion mastrascendentales y utilizados tanto a lo largo de la historia como en la actuali-dad.

2.1 Algoritmo de Fermat

Como ya se menciono en el apartado historico, el algoritmo de Fermat esun algoritmo de factorizacion especıfico, es decir, el numero a factorizar debecumplir unos requisitos previos. Se basa en la idea de factorizar un numero Nque es la diferencia de dos cuadrados donde uno de ellos es muy pequeno.

Actualmente no es uno de los algoritmos mas implementados y utilizados,de hecho apenas se usa salvo que se sepa previamente que el numero quequeremos factorizar tiene dos factores ceranos a la raız cuadrada del propionumero. No obstante, el algoritmo de Fermat contiene la idea principal en laque se basan algunos de los algoritmos mas potentes que se conocen, como lacriba cuadratica y el algoritmo de fracciones continuas.

El objetivo que persigue el algoritmo de Fermat consiste en descomponer unnumero en dos factores. Para hallar una descomposicion en factores primos,debemos continuar factorizando sucesivamente cada uno de los factores queobtengamos hasta que todos ellos sean numeros primos.

Proposicion 1. Sea N un numero entero, impar y positivo. Existe una corres-pondencia biyectiva entre cualquier factorizacion de N de la forma N = ab,

9

Page 18: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

10 2.1. Algoritmo de Fermat

donde a ≥ b > 0, y las representaciones de N de la forma N = x2 − y2, dondex e y son numeros enteros no negativos. Dicha correspondencia viene dada porlas ecuaciones

x =a+ b

2, y =

a− b2

; a = x+ y, b = x− y (2.1)

Demostracion. Dada la factorizacion N = ab, podemos escribir N = ab =(a+b2

)2 − (a−b2

)2, obteniendo de esta forma la diferencia de cuadrados.

Por otro lado, si tenemos N = x2 − y2 podemos factorizar facilmente la partederecha como (x+ y)(x− y).

Si N = ab con a y b numeros proximos, entonces y sera un numero pequeno,por lo que x sera un numero ligeramente mayor que

√N . En ese caso, podemos

encontrar los dos factores a y b probando todos los valores de x a partir deb√Nc + 1 hasta que encontremos uno para el que se cumpla x2 − N = y2.

Notar que si N es de por sı un cuadrado perfecto estamos ante una excepciontrivial.

Ejemplo. Factorizar N = 2093713 mediante el algoritmo de Fermat.

Solucion. Partiremos de x = b√

2093713c+ 1 = 1447

x√

x2 −N

1447√

96 = 9.79796

1448√

2991 = 54.69

1449√

5888 = 76.7333...

...

1462√

43731 = 209.12

1463√

46656 = 216

Ya hemos encontrado la forma de expresar nuestro numero N como dife-rencia de dos cuadrados:

N = 14632 − 2162 = (1463 + 216)(1463− 216) = 1679 · 1247 (2.2)

En este caso los factores encontrados no son primos, pero obviamente con-tienen los factores primos de N , si son numeros pequenos, como en este caso,se puede aplicar la division por tentativa a cada factor, en caso contrario sepodrıa proceder aplicando el algoritmo de Fermat u otro algoritmo de factori-zacion. Notar que si los factores a y b no estuvieran relativamente proximos, el

Page 19: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 11

algoritmo de factorizacion de Fermat encontrarıa ambos factores pero despuesde probar una larga lista de numeros x = b

√Nc+ 1, b

√Nc+ 2, . . ..

Existe una variacion del algoritmo de Fermat que funciona de una formamas eficiente en determinadas situaciones. Se le atribuye al matematico belgaMaurice Kraitchik (1882-1957) y se basa en el uso de congruencias.

2.2 Mejora de Kraitchik

Para aplicar esta generalizacion del algoritmo de Fermat es suficiente con queN divida a x2 − y2 para encontrar un factor de N , es decir:

N x2 − y2 = (x+ y)(x− y) (2.3)

si ahora N no divide ni a x − y ni a x + y, entonces podemos concluir quemcd(x+ y,N) > 1 y ya hemos encontrado un factor no trivial de N . Por lotanto, el objetivo sera buscar numeros x e y tales que

x2 ≡ y2 (mod N)

x 6≡ ±y (mod N)(2.4)

Supongamos ahora que encontramos un conjunto de numeros x1, . . . , xn, ta-les que x21 ≡ a1 (mod N), . . . , x2n ≡ an (mod N) para ciertos enteros a1, . . . , an.Si ahora un subconjunto ai1 , . . . , air de a1, . . . , an cumple que el productoai1 · · · air es un cuadrado, entonces

(xi1 · · ·xi)2 ≡ ai1 · · · air (mod N) (2.5)

y de esta forma tenemos la congruencia buscada x2 ≡ y2 (mod N). Ahora estacongruencia puede o no satisfacer x 6≡ y (mod N), lo cual determina finalmentesi los numeros encontrados son utiles para la factorizacion de N .

Ejemplo. Factorizar N = 642537 mediante la mejora de Kraitchik

Solucion. Definimos primero el polinomio P (x) = x2 − N y tomamosx0 = b

√Nc + 1, en este caso tenemos x0 = 802. Sea ahora xk = x0 + k,

calculamos unos cuantos valores de P (xk), obteniendo la siguiente tabla:

Ya tenemos dos numeros u = 805 · 812 y v = 22 · 74 tales queu2 (mod 642537) = 354025 y v2 (mod 642537) = 354025, es decir,

u2 ≡ v2 (mod 642537) (2.6)

Page 20: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

12 2.2. Mejora de Kraitchik

xk P(xk) Factores

802 667 23, 29

803 2272 25, 71

804 3879 32, 431

805 5488 24, 73 X

806 7099 31, 229

807 8712 23, 32, 112

808 10327 23, 449

809 11944 23, 1493

810 13563 32, 11, 137

811 15184 24, 13, 73

812 16807 75 X

mientras que por otro lado u (mod 642537) = 11123 y v (mod 642537) = 9604,o lo que es lo mismo

u 6≡ ±v (mod 642537) (2.7)

por lo tanto tenemos

mcd(642537, 11123+9604) = 20727, mcd(642537, 11123−9604) = 1519 (2.8)

obteniendo ası dos factores no triviales de 18601.

La complejidad del algoritmo de Kraitchik radica en encontrar los numerosu y v apropiados. En torno al ano 1931, D.H. Lehmer y R.E. Powers de-mostraron como encontrar dichos pares de numeros de una forma sistematicautilizando fracciones continuas, sin embargo, su algoritmo no fue util hastaque avanzo la capacidad de calculo de las computadoras. Daniel Shanks fueuno de los primeros en aprovechar el trabajo realizado por Kraitchik, Lehmery Powers, dando lugar ası al algoritmo de factorizacion de formas cuadraticas(SQUFOF), que por su similitud teorica con los algoritmos de Fermat y Krait-chik no se explicara en este trabajo. En 1975, John Brillhart y Michael Morisonutilizaron fracciones continuas y, apoyandose en los estudios de Lehmer y Po-wers, publicaron un libro llamado A Method of Factoring and the Factorizationof F7, que se ha convertido en la version estandar del algoritmo de fraccionescontinuas (CFRAC), momento a partir del cual comenzo la factorizacion denumeros realmente grandes.

Durante anos, el algoritmo de fracciones continuas se gano el atributo dealgoritmo mas rapido para factorizar numeros grandes con factores primoselevados. Muchas maquinas dedicadas a la factorizacion de numeros enteros

Page 21: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 13

ejecutaban este algoritmo. La maquina conocida por el nombre de GeorgiaCracker utilizaba el algoritmo de fracciones continuas manipulando enteros dehasta 60 cifras. En las sucesivas decadas, la criba cuadratica de Carl Pomerancellego a desbancar al algoritmo de fracciones continuas.

2.3 Algoritmos de John F. Pollard

Uno de los inconvenientes que tienen el algoritmo de fracciones continuas yla criba cuadratica es que no son tan eficientes a la hora de buscar factoresprimos de un tamano medio, entre 105 y 1010, como lo son cuando se trata defactores realmente grandes. Por ello, si un numero compuesto tiene un factorprimo demasiado grande para calcularlo utilizando la division por tentativa,necesitamos una forma mas eficiente de calcularlo que la proporcionada porlos algoritmos mas potentes.

En este punto aparecen dos algoritmos propuestos por el matematicobritanico John Pollard. Pese a que ninguno de los dos es suficientemente efi-ciente cuando se trata de enteros grandes, ambos son sencillos de entender yfaciles de implementar. En la practica, cuando estamos factorizando un nume-ro y ya hemos exprimido al maximo la division por tentativa obteniendo losfactores inferiores a 105, se ejecutan los algoritmos de Pollard para tratar deencontrar algun factor antes de utilizar los algoritmos realmente potentes.

Se trata de dos algoritmos pseudoaleatorios ya que generan sucesiones queson analizadas como si fueran completamente aleatorias. Actualmente se co-nocen como metodo ρ de Pollard y metodo p− 1 de Pollard.

2.3.1 Algoritmo ρ de Pollard

Para llevar a cabo la factorizacion de un numero N, consideramos en primerlugar una funcion aleatoria f : A −→ A, con A = {0, 1, . . . , l − 1}, y donde fsera generalmente un polinomio irreducible. Sea ahora a ∈ A tomado de formaaleatoria, consideramos la secuencia

a, f(a), f(f(a)), . . . (2.9)

Como f es una funcion definida en un conjunto finito, llegara un punto en el quef repetira un valor y a partir de ahı obtendremos un ciclo. Si representamos estecomportamiento en forma de diagrama, llegaremos a una estructura similar a

Page 22: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

14 2.3. Algoritmos de John F. Pollard

la de la letra griega ρ, con una primera parte precıclica que serıa la cola dela letra ρ y posteriormente la parte cıclica que representarıa el cırculo delcaracter.

Figura 2.1: Forma de la sucesion de ai con forma similar a la letra griegaρ, motivo por el cual se le atribuye ese nombre al algoritmo desarrollado porJohn F. Pollard.

En esta parte entra en juego la paradoja del cumpleanos1, y se estima quela longitud de la cola y de la parte circular juntas, sean del orden de

√l.

Supongamos ahora que p es un numero primo y tomamosA = {0, 1, . . . , p− 1}. Trabajarmos con la siguiente funcion f :

f : A −→ A

x −→ x2 + 1(mod p)(2.10)

de esta forma, si la funcion considerada es lo suficientemente aleatoria, espera-mos que la sucesion {f (i)(a), a ∈ A} con i = 0, 1, . . . que parte de un numeroa aleatorio, comience a repetrise antes del paso

√l. Es decir, esperamos que

f (j)(a) = f (k)(a) con 0 ≤ j < k con k cercano a√l.

Si ahora tratamos de factorizar un numero N y p es el menor fac-tor primo de N , como no conocemos p, no podemos calcular la se-cuencia a, f(a), f(f(a)), . . . , pero sı que podemos calcular la secuenciaa, F (a), F (F (a)), . . . dada por la funcion

F : A −→ A

x −→ x2 + 1(mod N)(2.11)

donde claramente f(x) = F (x)(mod p). De este modo

f (j)(a) = f (k)(a) =⇒ F (j)(a) ≡ F (k)(a)(mod p) (2.12)

1La paradoja del cumpleanos estudia la probabilidad de que al tomar en un conjunto conn elementos dos de ellos al azar, estos sean el mismo.

Page 23: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 15

esto implica que p mcd(F (j)(a) − F (k)(a), N). Lo mas probable es que esemaximo comun divisor no sea igual a N , lo que nos proporcionara un factorno trivial del mismo.

Ejemplo. Factorizar N = 738031 mediante el algoritmo ρ de Pollard.

Solucion. Primero determinamos cual sera la funcion f utilizada, en nuestrocaso tomamos f(x) = x2 + 1(mod N) y partiremos del dato inicial a0 = 356 ∈A = {0, 1, . . . , N − 1}. El siguiente paso consiste en calcular la secuencia.

i ai = f(ai−1)1 1267372 4985173 5445984 3678835 7290346 5006317 4987488 6471419 21111810 379804

A continuacion, buscamos dos numeros aj, ak tales quemcd(aj − ak, N) 6= 1. En nuestro caso, la primera vez que ocurre es conel par (a2, a3), con el cual obtenemos

mcd(544598− 498517, 738031) = 7 (2.13)

obteniendo de esta forma la descomposicion en factores deN = 738031 = 7 · 105433.

Una de las principales preocupaciones a la hora de aplicar este meto-do es la de evitar el hecho de calcular todos los pares (j, k) y todos losmcd(F (j)(a)−F (k)(a), N) para cada par. Hacer eso podrıa suponer mas tiem-po del que costarıa encontrar el primer factor primo p mediante division portentativa.

Debemos buscar una alternativa para encontrar pares (j, k) validos y evitarası examinarlos todos. Una de las alternativas que puede ser de gran ayuda esel algoritmo busca-ciclos de Floyd, tambien conocido como el algoritmo de latortuga y la liebre.

Si tenemos la funcion f : ZN −→ ZN y x0 = y0 ∈ ZN , definimos las dossecuencias xi+1 = f(xi) e yi+1 = f(f(yi)). Interpretamos la sucesion xi como la

Page 24: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

16 2.3. Algoritmos de John F. Pollard

trayectoria de la tortuga, que recorre todos los nodos de la sucesion mientrasque yi representa a la liebre, saltando por los terminos de la sucesion de dosen dos. Claramente ambas trayectorias coincidiran cuando la distancia entreellas sea igual a la longitud del ciclo formado por la sucesion inicial, cosa quesiempre ocurre antes de que la tortuga realice un ciclo completo.

Ejemplo. Factorizar N = 738031 mediante el algoritmo ρ de Pollard y apli-cando el algoritmo busca-ciclos de Floyd.

Solucion. Volvemos a utilizar la misma tabla del ejemplo anterior.

i ai = f(ai−1)1 1267372 4985173 5445984 3678835 7290346 5006317 4987488 6471419 21111810 379804

A continuacion se calcula mcd(ai−a2i, N) con i = 1, 2, . . . hasta encontrarun caso en el que mcd(ai − a2i, N) 6= 1 (notar que el primer valor que tomai no tiene por que ser necesariamente i = 1). En nuestro caso obtenemos unresultado valido cuando i = 2:

mcd(a2 − a4, N) = mcd(498517− 367883, 738031) = 7 (2.14)

de esta forma hemos encontrado un factor tras solo 2 iteraciones, una formamas eficiente que la anterior, en la que necesitamos 23 iteraciones.

2.3.2 Algoritmo p− 1 de Pollard

Este algoritmo es similar al algoritmo ρ de Pollard salvo que se apoya en elpequeno teorema de Fermat que se enuncia a continuacion.

Teorema 1 (Pequeno teorema de Fermat). Sea p un numero primo tal queno divide a un entero a, entonces

ap−1 ≡ 1(mod p) (2.15)

Page 25: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 17

Demostracion. Consideramos los enteros

a, 2a, . . . , (p− 1)a (2.16)

ninguno de los enteros anteriores es divisible por p ya que eso significarıa quep a, cosa que no ocurre por hipotesis. Notar que si

ra ≡ sa(mod p)⇒ s ≡ r(mod p) (2.17)

por lo tanto, a (mod p), 2a (mod p), . . . , (p−1)a (mod p) son numeros distintosy ninguno de ellos es cero, esto es lo mismo que decir que son congruentes con1, 2, . . . , p− 1 en algun orden.

Ahora multiplicamos todas las congruencias anteriores obteniendo ası elsiguiente resultado

a · 2a · · · · · (p− 1)a ≡ 1 · 2 · · · · · (p− 1) (mod p)

=⇒ (p− 1)!ap−1 ≡ (p− 1)! (mod p)

=⇒ ap−1 ≡ 1 (mod p)

(2.18)

Corolario 1. Sea p un numero primo e impar entonces

2p−1 ≡ 1 (mod p) (2.19)

Demostracion. Como p es un numero impar, claramente 2 - p por lo que apli-camos el teorema anterior.2

Para el desarrollo del algoritmo p − 1 de Pollard necesitaremos las dosdefiniciones enunciadas a continuacion.

Definicion 1. Un numero N se dice B-liso si todos sus factores primos sonmenores que B, es decir, si N = pk11 · pk22 · · · pknn entonces es B-liso si pi ≤B ∀i = 1, . . . , n.

Definicion 2. Un numero N se dice B-potencia-lisa si las potencias de losfactores primos de N son menores que B. Si N = pk11 · pk22 · · · pknn entonces esB-potencia-lisa si pkii ≤ B ∀i = 1, . . . , n.

Una vez introducidos estos terminos vamos a explicar la estructura delalgoritmo p− 1 de John F. Pollard.

2La notacion a | b indica que a divide a b.

Page 26: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

18 2.3. Algoritmos de John F. Pollard

Sea N el numero entero que queremos factorizar, el primer paso consiste enelegir un entero positivo B, que generalmente no debe superar las seis cifras,con la esperanza de que N tenga un factor p tal que p− 1 sea B-potencia-lisa.El objetivo sera encontrar p utilizando la siguiente estrategia. Sea a un enteropositivo no divisible por p, por el pequeno teorema de Fermat,

ap−1 ≡ 1(mod p) (2.20)

Sea m = mcm(1, 2, 3, . . . , B), como hemos asumido que p−1 es B-potencia-lisa,entonces se tiene claramente que p− 1 | m, por lo tanto

am ≡ 1(mod p) (2.21)

o lo que es lo mismo p | am − 1, de este modo tenemos

p | mcd(am − 1, N). (2.22)

Si mcd(am − 1, N) < N , entonces ya tenemos un factor no trivial de N .Si por el contrario mcd(am − 1, N) = N , entonces debemos repetir el metodotratando de tomar un numero B menor o realizando una eleccion diferente dea.

Aunque podemos tomar como a cualquier numero que no sea divisible porp, en un primer intento es habitual tomar a = 2.

Como ya advertimos anteriormente, cuando aplicamos este algoritmo conun numero B fijado previamente, este funcionara cuando el numero N a facto-rizar contenga un factor p tal que p− 1 sea B-potencia-lisa. Aproximadamenteel 15 % de los numeros primos p localizados en el intervalo (1015, 1015 +10000),son de tal forma que p− 1 es 105-potencia-lisa. Esto significa que el algoritmop − 1 de Pollar con B = 105 funciona en torno al 15 % de las veces cuandotratamos de encontrar una raız de 15 dıgitos situada en el rango especificado.

Ejemplo. Factorizar N = 124786124891235 mediante el metodo p − 1 dePollard.

Solucion. En primer lugar determinamos los valores de las variables. En nues-tro caso vamos a probar inicialmente con B = 8. Lo primero que haremossera calcular

m = mcm(1, 2, 3, . . . , 8) (2.23)

aunque en nuestro caso, como B se trata de un numero muy pequeno, podemostomar m = B! = 40320 porque claramente si p− 1 | mcm(1, 2, . . . , 8) entoncestambien p− 1 | 8!.

Page 27: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 19

A continuacion, tomamos a = 2 y de este modo tenemos

240320 − 1 ≡ 47614174037505 (mod 124786124891235) (2.24)

y por ultimo calculamos

mcm(am−1, N) = mcm(47614174037505, 124786124891235) = 135 (2.25)

encontrando, de esta forma, un factor compuesto no trivial p = 135.

2.4 Algoritmo de fracciones continuas

Como ya se introdujo anteriormente, el algoritmo de factorizacion mediantefracciones continuas fue descrito en 1931 por D.H. Lehmer y R.E. Powers y fueposteriormente en 1975 cuando John Brillhart y Michael Morison desarrollaronun algoritmo de computadora basado en las ideas de Brillhart y Morison. Acontinuacion se introducen varios conceptos necesarios para el desarrollo deeste apartado.

Se llama fraccion continua a una expresion del tipo:

x = a0 +1

a1 +1

a2 +1

a3 +1

. . .

(2.26)

donde a0 ∈ Z, ai ∈ N cuando i ≥ 1. Se puede expresar la fraccion continua deun numero x como:

x = [a0, a1, a2, . . .] (2.27)

2.4.1 Representacion de un numero como una fraccioncontinua

A continuacion se muestra como calcular cada valor ai que representa el numeroreal x. Para ello definimos primero la serie

x0 = x, x1 =1

x0 − bx0c, . . . , xi =

1

xi−1 − bxxi−1c, ∀i = 1, 2, . . . (2.28)

Page 28: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

20 2.4. Algoritmo de fracciones continuas

y de este modo los coeficientes que representan la fraccion continua del numerox seran

a0 = bx0c, a1 = bx1c, . . . , ai = bxic, (2.29)

Las fracciones continuas permiten determinar la irracionalidad de un nume-ro, ya que para que este sea racional, su desarrollo debe ser finito.

Definicion 3. Llamaremos i-esimo reducido de una fraccion continua a lafraccion continua finita

mi

ni

= [a0, . . . , ai] (2.30)

Notar que la sucesion de numeros racionales cumple que lımi→∞

mi

ni

= x. Estos

reducidos se pueden obtener de forma recursiva{m0 = a0

n0 = 1

{m1 = a0a1 + 1

n1 = a1

{mi = aimi−1 +mi−2

ni = aini−1 + ni−2i ≥ 2 (2.31)

2.4.2 Algoritmo de fracciones continuas

Sea N el numero que queremos factorizar, en primer lugar debemos calcularel i-esimo reducido de

√N y calcular bi ≡ m2

i (mod N). Segun calculamos cadavalor bi descartaremos aquellos que no factoricen en la base de factores Bescogida, esta base de factores variara en funcion de N ya que dependiendodel tamano del numero que queremos factorizar, sera suficiente con una basede factores pequena o necesitaremos ampliarla.

Una vez que hayamos calculado suficientes numeros bi buscaremos un pro-ducto de bi cuyos factores aparezcan un numero par de veces, es decir, tendre-mos un conjunto {b1, . . . , bk} tal que b1 · · · bk = b2. De esta forma habremos

encontrado una congruencia del tipok∏

i=1

bi ≡(

k∏i=1

m2i

)(mod N).

Por utlimo, para encontrar el factor de N se procedera como en el resto dealgoritmos que buscan congruencias cuadraticas, calculando el maximo comundivisior de N con la diferencia de los numeros cuyo cuadrado era congruentemodulo N .

Ejemplo. Factorizar N = 173131 utilizando como base de factores B ={−1, 2, 3, 5, 7, 11, 13, 17}

Page 29: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 21

Solucion. En primer lugar calculamos una aproximacion de la expresion de√N como fraccion continua√

173131 ≈ {416, 11, 10, 1, 1, 2, 1, 2, 2, 1, 4, 1, 1, 3, 2, 2, 2, 3, 7, 13} (2.32)

y a continuacion calculamos unos cuantos valores bi

[a0, . . . , ai] = mini

bi ≡ m2i (mod N) bi = pe11 · · · pemm

[416] = 416 −75 ≡ 4162 (mod N) −75 = −1·3·52

[416,11] =4577

1178 ≡ 45772 (mod N) 78 = 2 · 3 · 13

[416,11,10] =46186

111−455 ≡ 461862 (mod N) −455 = −1·5·7·13

[416,11,10,1] =50763

122365 ≡ 507632 (mod N) 365 = 5 · 73

[416,11,10,1,1] =96949

233−258 ≡ 969492 (mod N) −258 = −1·2·3·43

[416,11,10,1,1,2] =244661

588457 ≡ 2446612 (mod N) 457 = 457 · 23

[416,11,10,1,1,2,1] =341610

821−271 ≡ 3416102 (mod N) −271 = −1 ·271

[416,11,10,1,1,2,1,2] =927881

2230261 ≡ 9278812 (mod N) 261 = 32 · 29

[416,11,10,1,1,2,1,2,2] =2197372

5281−507 ≡ 21973722 (mod N) −507 = −1·3·132

En este punto observamos que (−75 · −507) = (−1)2 · 32 · 52 · 132 o lo quees lo mismo (−75 · −507) = (−1 · 3 · 5 · 13)2 por lo tanto tenemos la siguientecongruencia:

4162 · 21973722 ≡ (−1 · 3 · 5 · 13)2 (mod N) (2.33)

y a su vez tenemos que

416 · 2197372 ≡ 148203 (mod N)

−1 · 3 · 5 · 13 ≡ 172936 (mod N)(2.34)

de este modo calculamos ahora

mcd(148203− 172936, 173131) = 24733

mcd(148203 + 172936, 173131) = 7(2.35)

por lo que ya hemos encontrado dos factores no triviales de N

173131 = 7 · 24733 (2.36)

Page 30: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

22 2.5. Curvas elıpticas

2.5 Curvas elıpticas

En 1987, Lenstra desarrollo un algoritmo que factorizaba numeros enterosutilizando teorıa de curvas elıpticas. Para explicar dicho proceso, vamos acomenzar con una pequena introducion a teorıa de grupos.

2.5.1 Grupos

Definicion 4. Un grupo G es un conjunto no vacıo con una operacion binaria

· : G×G −→ G

(a, b) 7−→ a · b(2.37)

que cumple las siguientes propiedades:

1. La operacion es asociativa. Si a, b y c estan en G, entonces (a · b) · c =a · (b · c).

2. Existe elemento identidad. ∃ e ∈ G tal que a · e = a = e · a ∀a ∈ G.

3. Cada elemento de G posee inverso. Si a ∈ G entonces existe un elementob ∈ G tal que a · b = e = b · a.

Los enteros con la suma forman un grupo donde el cero es el elementoidentidad y −a es el inverso de a. El grupo se llama (Z,+).

Si n es un numero entero positivo, entonces los numeros enteros positivosmenores que n y primos con n con la multiplicacion modular con n comooperacion binaria, forman un grupo definido de la siguiente forma:

U(n) := {a ∈ Zn | a es primo con n} (2.38)

Definicion 5. El orden de un grupo G es el numero de elementos que poseeel grupo y se denota por |G|.

Definicion 6. Sea G un grupo con la operacion binaria ·, elemento identidad

Page 31: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 23

e y sea a ∈ G definimos las potencias de a de la siguiente forma:

a−1 es el inverso de a

a0 = e

a1 = a

a2 = a · aa3 = a · a · a

...

an = a · a · · · a n veces.

(2.39)

Definicion 7. El orden de un elemento a en un grupo G es el menor n ∈ Ntal que an = e. En caso de que no exista tal n diremos que el orden de a esinfinito.

2.5.2 Curvas elıpticas

Consideremos la ecuaciony2 = x3 + ax+ b, (2.40)

con x, y ∈ R y donde a y b son constantes escogidas tales que

4a3 + 27b 6= 0 (2.41)

esta restriccion garantiza que la ecuacion cubica

z = x3 + ax+ b (2.42)

tiene tres raıces distintas. La ecuacion (2.40) tiene solucion en y solo cuan-do la expresion de la derecha es positiva, en ese caso las soluciones serany = ±

√x3 + ax+ b. Por otro lado, si la ecuacion (2.42) tiene las tres raıces

positivas, entonces la ecuacion (2.40) presentara un aspecto parecido al de lafigura 2.2.

Estas curvas tienen la propiedad de que toda lınea no vertical que lasinterseca en dos puntos, entonces tambien las interseca en un tercero. Paralas rectas tangentes a la curva se considera que el punto de tangencia es unpunto de interseccion doble. Veamos ahora como calcular el tercer punto detangencia.

Teorema 2. Sean P = (x1, y1) y Q = (x2, y2) dos puntos de la curva elıpticadada por la ecuacion

y2 = x3 + ax+ b, 4a3 + 27b2 6= 0 (2.43)

Page 32: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

24 2.5. Curvas elıpticas

Figura 2.2: Representacion de la curva y2 = x3 − 13x− 12

asumimos que si x1 = x2 entonces y1 6= −y2. No obstante permitiremos quelos dos puntos P y Q sean el mismo salvo en el caso y1 = 0. El tercer puntode interseccion S = (x3, y3) se calcula de la siguiente manera:Si x1 6= x2 entonces

λ =y1 − y2x1 − x2

(2.44)

Si x1 = x2 entonces

λ =3x21 + a

2y1(2.45)

y finalmente tenemos

x3 = λ2 − x1 − x2,y3 = λ(x3 − x1) + y1

(2.46)

Demostracion. El valor de λ es la pendiente de la recta que une los dos puntosP y Q. Esto esta claro cuando x1 6= x2, ası que vamos a probar que λ es dichapendiente cuando x1 = x2. Como tanto P como Q satisfacen la ecuacion de lacurva elıptica, tenemos la expresion

y21 − y22 = x31 − x32 + a(x1 − x2)(y1 − y2)(y1 + y2) = (x1 − x2)(x21 + x1x2 + x22 + a)

(2.47)

por lo tanto ya tenemos

λ =y1 − y2x1 − x2

=x21 + x1x2 + x22 + a

y1 + y2(2.48)

Page 33: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 25

y de este modo vemos claramente que

λ =3x21 + a

2y1(2.49)

la ecuacion (2.48) se cumple para cualquier par de puntos de nuestra curvaelıptica, por lo tanto, tambien tenemos que

λ(y3 + y1) = x23 + x3x1 + x21 + a

λ(y3 + y2) = x23 + x3x2 + x22 + a(2.50)

de este modo, restando ambas ecuaciones tenemos

λ(y1 − y2) = x3(x1 − x2) + x21 − x22 (2.51)

si dividimos ahora la expresion anterior entre x1 − x2 nos queda

λy1 − y2x1 − x2

= x3 + x1 + x2 (2.52)

o lo que es lo mismo

λ2 = x3 + x1 + x2 (2.53)

de donde podemos calcular el valor de x3 y en consecuencia el de y3.

Definicion 8. Dada un curva elıptica y dos puntos racionales de la curvaP = (x1, y1) y Q = (x2, y2) 6= (x1,−y1) (llamaremos punto racional a todopunto del cuerpo K sobre el que trabajemos que satisface la ecuacion de lacurva) definimos la operacion binaria

P +Q = (x3,−y3) (2.54)

donde x3, y3 son los puntos definidos por el Teorema 2.

Notar que la suma de dos puntos P y Q dados de la curva elıptica no es eltercer punto de interseccion de la recta que une P y Q y la curva, es el puntosimetrico respecto al eje x de dicho tercer punto de interseccion, que tambiense encuentra sobre la curva elıptica, como se observa en la Figura 2.3.

Ya tenemos un conjunto de puntos racionales sobre la curva elıptica y unaoperacion binaria, el siguiente paso consiste en darle a ambos la estructura degrupo.

Page 34: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

26 2.5. Curvas elıpticas

Figura 2.3: Representacion de la suma de dos puntos P y Q sobre una curvaelıptica, el punto R = P +Q representa el inverso aditivo de S.

2.5.3 Estructura de grupo de las curvas elıpticas

Comenzaremos este apartado con una definicion

Definicion 9. Tomamos ∞ como elemento identidad de la operacion binaria+ y lo definimos de la siguiente manera

(x, y) + (x,−y) = (x,−y) + (x, y) =∞ (2.55)

este punto ∞ puede ser visto como un punto lo suficiente lejano como paraque toda linea recta vertical pase por el. De este modo conseguimos que todarecta que interseca con la curva elıptica en dos puntos, lo haga en un tercero.

Vamos a estudiar a continuacion las curvas elıpticas con un enfoque modu-lar.

Sea E una curva elıptica sobre Zq, con q primo, denotaremos por E(Zq)al conjunto de puntos (x, y) ∈ Zq × Zq que satisfacen la ecuacion de la curva,

Page 35: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 27

al que le anadiremos ∞ como elemento identidad. De este modo tenemos elconjunto

E(Zq) = {(x, y) ∈ Zq × Zq|y2 = x3 + ax+ b}⋃{∞} (2.56)

Como Zq es finito con un numero q de elementos, obviamente el conjuntoE(Zq) es un conjunto finito. Notar que ahora, respecto a la operacion binariatenemos que, si P = (x1, y1) y Q = (x2, y2) entonces podemos definir x3 e y3de la siguiente manera

x3 = (λ2 − x1 − x2) (mod q)

y3 = (λ(x3 − x1) + y1) (mod q)(2.57)

y de esta forma

P +Q ≡ (x3,−y3) (mod q) (2.58)

no obstante seguiremos utilizando la notacion P +Q = (x3,−y3).

Por otro lado tambien debemos tener en cuenta en las expresiones de laecuacion (2.57) que si x1 6≡ x2 (mod q) entonces

λ = (y1 − y2) · s (mod q) (2.59)

donde s es el inverso multiplicativo modulo q de x1 − x2.

En caso de que x1 ≡ x2 (mod q), entonces tenemos y1 ≡ y2 (mod q) con

λ = (3x21 + a) · s (mod q) (2.60)

y en este caso s es el inverso multiplicativo modulo q de 2y1.

Existe otro caso particular que hay que destacar que es el caso en el quex1 ≡ x2 (mod q) y, ademas, y1 ≡ −y2 (mod q), entonces

(x1, y1) + (x2, y2) =∞ (2.61)

Ejemplo. Si q = 7 y a = b = 1, tenemos la siguiente curva elıptica

y2 = x3 + x+ 1 (2.62)

por lo que E(Z7) = {(0, 1), (0, 6), (2, 2), (2, 5),∞}. Completaremos el ejemplodesarrollando los multiplos enteros del punto P = (0, 1). Notar que k · P =P + · · ·+ P︸ ︷︷ ︸

k veces

.

Page 36: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

28 2.5. Curvas elıpticas

2P = (x2,−y2) = (0, 1)+(0, 1) λ ≡ (3·0+1)·4 ≡ 4 (mod 7)x2 ≡ 16−0−0 ≡ 2 (mod 7)y2 ≡ 4·(2−0)+1 ≡ 2 (mod 7)

= (2, 5);

3P = (x3,−y3) = (2, 5)+(0, 1) λ ≡ (5−1)·4 ≡ 2 (mod 7)x3 ≡ 4−2−0 ≡ 2 (mod 7)y3 ≡ 2·(2−2)+5 ≡ 5 (mod 7)

= (2, 2);

4P = (x4,−y4) = (2, 2)+(0, 1) λ ≡ (2−1)·4 ≡ 4 (mod 7)x4 ≡ 16−2−0 ≡ 0 (mod 7)y4 ≡ 4·(0−2)+2 ≡ 1 (mod 7)

= (0, 6);

5P = (x5,−y5) = (0, 6)+(0, 1) =∞

Por ultimo, vamos a ver que efectivamente E(Z7) tiene estructura de grupo:

+ P 2P 3P 4P 5P

P 2P 3P 4P 5P 6P2P 3P 4P 5P 6P 7P3P 4P 5P 6P 7P 8P4P 5P 6P 7P 8P P5P 6P 7P 8P P 2P

2.5.4 Algoritmo de factorizacion utilizando curvaselıpticas

El algoritmo que se describe a continuacion parte de un numero entero N quesera el que tratemos de factorizar, tambien se determinara un numero B queindicara el numero maximo de iteraciones a realizar.

A continuacion se escogera una curva elıptica E ≡ y2 = x3 + ax + b con4a3 + 27b2 6= 0, como ya se explico en los apartados anteriores. Tambien seelegira un punto P = (x1, y1) ∈ E(ZN).

El siguiente paso es el que debemos iterar un maximo de m veces. Partire-mos con un valor i = 2 y mientras i ≤ m se calculara el valor de i · P como sevio en el ejemplo del apartado anterior y la siguiente decision dependera delresultado obtenido.

Page 37: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 29

Si i · P = ∞, o si en alguna de las operaciones no se cumple la condicionc =mcd(x1 − x2, N) = 1 (para el caso x1 6≡ x2 (mod N)) o la condicion c =mcd(y1 + y2, N) = 1 (para el caso x1 ≡ x2 (mod N)), entonces debemos cal-cular p =mcd(c,N) y si dicho p cumple que 1 < p < N entonces habremosencontrado un factor no trivial de N . En cualquier otro caso, incrementaremosel valor de i y volveremos a realizar los calculos.

Ejemplo. Factorizar N = 77 utilizando curvas elıpticas

Solucion. Vamos a tomar para este ejemplo la curva elıptica

y2 = x3 + x+ 1 (2.63)

y trabajaremos sobre Z77. Lo primero que haremos sera fijar m = 10 comoel numero maximo de iteraciones a realizar y a continuacion fijamos el puntoP = (0, 1) ∈ E(Z77) sobre el que realizaremos las cuentas.

Del mismo modo que se realizo anteriormente, procedemos a calcular losmultiplos enteros de P

2P = (x2,−y2) = (0, 1)+(0, 1) λ ≡ (3·0+1)·39 ≡ 39 (mod 77)x2 ≡ 392−0−0 ≡ 58 (mod 77)y2 ≡ 39·(58−0)+1 ≡ 30 (mod 77)

= (58, 47);

3P = (x3,−y3) = (58, 47)+(0, 1) λ ≡ (47−1)·4 ≡ 30 (mod 77)x3 ≡ 302−58−0 ≡ 72 (mod 77)y3 ≡ 30·(72−58)+47 ≡ 5 (mod 77)

= (72, 72);

4P = (x4,−y4) = (72, 72)+(0, 1) λ ≡ (72−1)·46 ≡ 32 (mod 77)x4 ≡ 322−72−0 ≡ 28 (mod 77)y4 ≡ 32·(28−72)+72 ≡ 50 (mod 77)

= (28, 27);

5P = (x5,−y5) = (28, 27)+(0, 1)

Vamos a estudiar que sucede con el multiplo 5P = (28, 27) + (0, 1). Paracalcular λ lo primero que tenemos que hacer es calcular s, que en este caso es elinverso multiplicativo modulo 77 de x1−x2 = 28. Al tratar de calcular el inversomodular de 28 vemos que no existe, esto se debe a que p =mcd(28, 77) = 7, esdecir no son primos entre sı y como 1 < p < 77 ya hemos encontrado un factorno trivial de 77, por lo que terminamos el proceso.

Page 38: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

30 2.6. Criba cuadratica

2.6 Criba cuadratica

Una vez que se han encontrado todos los factores pequenos de un numeromediante la division por tentativa y tambien se han aplicado los metodospropuestos por John Pollard, pero algunos tests de primalidad determinanque nuestro numero sigue siendo un numero compuesto, debemos procederaplicando algunos algoritmos mas potentes como pueden ser el metodo de lacurva elıptica, el algoritmo de fracciones continuas o la criba cuadratica.

Como ya se comento anteriormente, las implementaciones actuales han con-seguido que la criba cuadratica sustituya casi completamente al algoritmo defracciones continuas. La criba cuadratica es mas rapida para numeros N deal menos 18-20 cifras, el tamano mınimo para el que dicho algoritmo resultarealmente util.

El metodo de la curva elıptica tiene la ventaja de ser eficiente en un rangode numeros que comienza donde la division por tentativa deja de ser util y quetermina en torno a los numeros de 25-30 cifras, es decir, bien entrado el rangode aplicacion de la criba cuadratica.

Para explicar como funciona la criba cuadratica, es mas facil comenzar conun algoritmo mas simple propuesto en 1981 por John D. Dixon.

2.6.1 Algoritmo de Dixon

Como ya se explico en el apartado 2.2, Kraitchik propuso que se podıan en-contrar numeros x e y tales que

x2 ≡ y2 (mod N) (2.64)

teniendo ası una alta probabilidad de que mcd(x − y,N) fuera un factor notrivial de N . En esta idea se basa el algoritmo que propuso Dixon ya que tratade encontrar enteros x e y que cumplan la congruencia anterior.

Supongamos que el numero a factorizar es N , elegimos un numero enteroaleatorio a y calculamos

d(a) = a2 (mod N) (2.65)

y procedemos a realizar un intento rapido de factorizacion de d(a). Sin profun-dizar en el intento, aplicamos la division por tentativa hasta aproximadamente104 y, si no encontramos factores, probamos con un numero a diferente. Se

Page 39: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 31

necesita un gran numero de factorizaciones, ası que seguimos haciendo lo mis-mo hasta que tengamos mas numeros d(a) factorizados que numeros primoshay por debajo del lımite tomado para la division por tentativa (104). En estecaso necesitamos mas de 1229 numeros a para los cuales hemos encontrado lafactorizacion de d(a).

Sea ahora la base de factores B = {p1, . . . , p1229} que contiene los primeros1229 numeros primos. Si d(a) ha sido factorizado completamente, entoncespodemos escribirlo como

d(a) = pe11 · · · · · pe12291229 (2.66)

donde la mayor parte de los exponentes ei seran nulos. La factorizacion de d(a)puede ser representada por el vector

v(a) = (e1, . . . , e1229). (2.67)

Si ahora todas las entradas del vector v(a) son pares, entonces tenemos qued(a) es un cuadrado perfecto y por lo tanto hemos encontrado dos numerosx =

√d(a) e y = a tales que

x2 ≡ y2 (mod N). (2.68)

Desafortunadamente, esto no suele ser habitual, pero tenemos un numero devectores v(a) mayor que la longitud de los mismos. Esto significa que podemosencontrar una suma de distintos vectores v(a) que contenga todas las entradaspares. Para ello, definimos los vectores

w(a) = (b1, . . . , b1229) (2.69)

con bi =

{0, si ei es par

1, si ei es impary sobre dichos vectores w(a) se aplica elimi-

nacion gaussiana, obteniendo ası el subconjunto de vectores v(a) cuya sumaresulta un vector con coordenadas pares.

Llegados a este punto ya tenemos un subconjunto de numeros d(a)′s talesque el producto sera un cuadrado perfecto. Por lo que tenemos una congruenciade la forma

d(a1) · d(a2) · · · · · d(ar) ≡ a21 · a22 · · · · a2t (mod N) (2.70)

donde ambos lados son cuadrados perfectos, por lo que tendrıamos nuevamentenumeros x e y tales que x2 ≡ y2 (mod N). Aproximadamente en la mitad delos casos obtendremos un factor no trivial de N a partir de x e y. En caso deque no sea ası, habra que buscar otro subconjunto de vectores v(a) que paralos que los vector w(a) correspondientes sean linealmente independientes.

Page 40: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

32 2.6. Criba cuadratica

El algoritmo de Dixon es un algoritmo probabilıstico. No tenemos garantıade que nos vaya a proporcionar un factor de N pero en la practica es capazde, en ocasiones, encontrar factores muy grandes en un tiempo inferior al quetardarıa cualquier algoritmo determinista.

Por otro lado, la eliminacion gaussiana cuando todas las entradas son 0 o 1,funciona de una forma muy rapida incluso con matrices de tamano 1230×1230.La mayor parte del tiempo de ejecucion del algoritmo se invierte en elegir deforma aleatoria los numeros d(a) adecuados.

Ejemplo. Factorizar N = 12453 mediante el Algoritmo de Dixon utilizandola base de factores B = {2, 3, 5, 7, 11, 13, 17}.Solucion. Partiremos de las siguientes congruencias, que habran sido calcu-ladas aleatoriamente:

i ai d(ai) = a2i (mod N)

1 12015 5049 = 33 · 11 · 172 13023 1122 = 2 · 3 · 11 · 173 13380 72 = 23 · 32

A continuacion tomamos los siguientes vectores:

w(a1) = (0, 3, 0, 0, 1, 0, 1)

w(a2) = (1, 1, 0, 0, 1, 0, 1) (2.71)

w(a3) = (3, 2, 0, 0, 0, 0, 0)

cuya suma observamos que posee todas las entradas no nulas con valor par,por lo tanto sabemos que el producto de dichos valores d(a) se trata de unnumero cuadrado. De este modo ya hemos encontrado dos numeros x e y talesque

x2 ≡ y2 (mod N) (2.72)

Concretamente, los valores son

x = a1 · a2 · a3 = 12015 · 13023 · 13380

y =√d(a1) · d(a2) · d(a3) =

√5049 · 1122 · 72

(2.73)

por lo tanto comprobamos que

20935865961002 ≡ 201962 (mod N) (2.74)

Llegados a este punto, vemos que los numeros x e y poseen los cua-drados congruentes pero ellos no lo son, es decir x2 ≡ y2 (mod N) perox 6≡ y (mod N), por lo tanto calculamos

mcd(2093586596100− 20196, 12453) = 1779 (2.75)

Page 41: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 33

encontrando ası un factor no trivial de N .

2.6.2 Criba cuadratica

Introduccion

Carl Pomerance, un matematico estadounidense especializado en teorıa denumeros, propuso en 1981 un algoritmo llamado criba cuadratica que extendıalas ideas de Dixon y de Kraitchik. La criba cuadratica era el algoritmo defactorizacion mas rapido hasta que se descubrio la criba general del cuerpo denumeros en torno a 1993. No obstante, la criba cuadratica sigue siendo inclusomas rapida que la criba general del cuerpo de numeros cuando se trata denumeros menores de 110 dıgitos aproximadamente.

Estudiando la criba de Eratostenes, Pomerance se dio cuenta de que podıaescoger un intervalo de numeros y senalar aquellos que habıan sido marcadosmas de una vez al aplicar a dicho intervalo la criba de Eratostenes, encontrandoası numeros que tenıan varios factores primos pequenos.

Con el objetivo de aplicarlo en la criba cuadratica, se planteo el hecho deque si realizamos la division de un numero N por todos los numeros p de unintervalo y al final obtenemos 1, entonces ese numero N factoriza sobre dichointervalo. Si ademas el intervalo esta acotado por B, tenemos un numero B-liso.

Con la idea planteada hasta ahora, observamos que no estamos consideran-do potencias de primos, por lo que aplicando lo anterior a un numero comopor ejemplo un numero como 63 = 32 · 7, no obtendrıamos 1, sino 3. Paraevitar esto, bastarıa con dividir el numero N por la mayor potencia posibledel numero primo.

Todo esto permite encontrar de un modo rapido que numeros son B-lisos enun intervalo determinado. La criba cuadratica funciona eficientemente porquecuando tomamos modulo p a la hora de ejecutar el algoritmo, los multiplos dedicho numero p aparecen en posiciones concretas del intervalo.

Base teorica

Como ya se explico en el subapartado de introduccion a este algoritmo, lacriba cuadratica comparte la base fundamental del algoritmo de Dixon pero in-troduciendo una serie de mejoras que ofrecen resultados mucho mas eficientes.

Page 42: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

34 2.6. Criba cuadratica

Ademas, pasamos de tener un algoritmo probabilista, como era el de Dixon, atener un algoritmo determinista.

La primera novedad que introdujo Pomerance respecto al algoritmo deDixon la encontramos en la funcion que utilizaremos, ası como en el modo debuscar los numeros ai = i + b

√Nc validos. Ası bien, la funcion en este caso

serad(ai) = a2i −N (2.76)

recuperando ası el polinomio que utilizo Kraitchik. Para elegir los numeros aidebemo tener en cuenta la siguiente propiedad:

Si p | d(ai) entonces p | d(ai + kp) ∀k ∈ Z (2.77)

Demostracion. Si d(ai) ≡ 0 (mod p) =⇒ a2i − N ≡ 0 (mod p), entonces sik ∈ Z

d(ai + kp) = a2i + 2aikp+ k2p2 −N ≡ a2i −N ≡ 0 (mod p) (2.78)

Ahora para encontrar numeros ai cuyo d(ai) asociado factorice sobre labase de factores fijada, lo que haremos sera escoger un numero primo p ∈ Fdonde F denota la base de factores. El siguiente paso consiste en determinarque numeros d(ai) son divisibles por p dentro de un rango establecido para ai,ahorrandonos ası el coste computacional de tratar de dividir d(ai) entre todoslos numeros primos de nuestra base de factores que no dividen a d(ai). Notarque la division es una de las operaciones basicas mas costosas en terminoscomputacionales.

Para saber que valores ai cumplen que p | d(ai) basta con resolver la con-gruencia cuadratica a2i ≡ N (mod p), una operacion que puede realizarse conrelativa rapidez y eficiencia. Aprovechando ahora la propiedad (2.77), calcula-mos el resto de valores ai cuyo d(ai) es divisible por p simplemente mediantela operacion ai + kp con k ∈ Z.

Si queremos que este procedimiento funcione adecuadamente, necesitamosque N sea un residuo cuadratico modulo p con los numeros primos p que seencuentran en nuestra base de factores F , por lo que eliminaremos de F losnumeros que no cumplan dicha condicion.

Algoritmo

Page 43: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 35

Es importante que los valores d(ai) sean lo mas pequenos posible, aumen-tando ası la probabilidad de que se trate de un numero B-liso, es decir, quefactorice en la base de factores F . Para ello, solo consideraremos valores dei cercanos a cero, por lo que elegiremos una cota M y tomaremos todos losnumeros i que cumplan −M ≤ i ≤ M . Este intervalo recibira el nombre deintervalo de criba. De este modo, cuando i ∈ [−M,M ], p sea un numeroprimo tal que p | d(ai) = a2i − N , entonces como se ha hecho notar antes, secumple la congruencia

a2i ≡ N (mod p) (2.79)

o lo que es lo mismo

(i+ bNc)2 ≡ N (mod p) (2.80)

por lo que vemos que N es un residuo cuadratico modulo p, en este momentonecesitamos la siguiente definicion:

Definicion 10. Sea p un numero primo y N un entero cualquiera, el sımbolo

de Legendre

(N

p

)se define como 0 si p divide a N , +1 si N es un residuo

cuadratico modulo p y −1 en otro caso.

Por lo tanto, necesitamos que la base de factores F este formada por nume-ros primos p que cumplan (

N

p

)= +1 (2.81)

ademas, F contendra el factor −1 y estara acotada en tamano por B.

Respecto a la eleccion de las cotas M y B, Eric Landquist en su libroThe Quadratic Sieve Factoring Algorithm calculo por heurıstica las siguientesformulas que aportan valores validos en la mayor parte de los casos:

B =

⌊(e√

ln(N) ln(ln(N)))√2

4

M =

⌊(e√

ln(N) ln(ln(N))) 3√2

4

Como ya hemos comentado anteriormente, vamos a trabajar con el intervalocompleto en una sola vez, utilizando la propiedad (2.77). Para ello procedere-mos de la siguiente forma:

Page 44: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

36 2.6. Criba cuadratica

Para cada factor primo p de la base de factores F , resolvemos la congruenciamostrada a continuacion. Esta operacion equivale a calcular las raıces modu-lares de la funcion d(x) = (x+ bNc)2 −N :

d(x) = (x+ bNc)2 −N ≡ 0 (mod p) (2.82)

o equivalentemente(x+ bNc)2 ≡ N (mod p) (2.83)

como dichas raıces son infinitas, nos quedaremos con las dos que son menoresque el numero primo p.

Sea s = x− b√Nc, entonces

• Si p = 2, estamos ante un caso especial en el que solo tendremos unasolucion.

s2 ≡ N (mod 2)⇒ s2 ≡ 1 (mod 2)⇒ sp = 1− b√Nc (mod 2) (2.84)

• Si p > 2s2 ≡ N (mod p) (2.85)

Entonces tenemos dos soluciones x1 = x1 y x2 = p− x1 y por tanto

sp1 = x1 − b√Nc (mod p) y sp2 = x2 − b

√Nc (mod p) (2.86)

Estas soluciones indican en que momento comienza la progresion aritmeticade numeros que tienen a p como factor.

A continuacion, lo primero que tenemos que hacer es inicializar el intervalode criba antes descrito como un vector que contenga en cada entrada los valoresde d(ai).

Para cada solucion obtenida en el paso anterior sp, dividiremos d(asp) entrep. Como ya se comento antes, sabemos por la propiedad (2.77) que todos loselementos del intervalo de criba que se encuentren en la progresion aritmeticason tambien divisibles por el numero primo p, por lo que no sera necesarioprobar la divisivilidad de todos los elementos entre todos los numeros primosde nuestra base de factores.

Iremos recorriendo toda la base de factores F hasta el final, cuandoobtendremos unos en varias posiciones del vector. Esto significa que el numeroinicial factoriza completamente en F , es decir, es B-liso y por lo tanto es unode los numeros que nos interesa.

Page 45: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 37

Notar que no hemos tenido en cuenta la posibilidad de que un elemento denuestra base de factores aparezca mas de una vez como factor de un numero,para solventar esto simplemente calcularemos la mayor potencia del primoque divide a d(asp).

El proceso de criba se itera hasta conseguir al menos B + 1 elementos delintervalo de criba que sean B-lisos. El siguiente paso es bastante similar alo que proponıa el algoritmo de Dixon y consiste en buscar productos entredichos elementos B-lisos que proporcionen un cuadrado perfecto. Una forma dehacerlo consiste en colocar para cada elemento B-liso un vector cuyas entradascontengan los exponentes de cada factor modulo 2. Obtenemos ası una matrizA que tiene en cada columna los exponentes modulo 2 de los primos de nuestrabase de factores F .

Como nos interesa que el producto de los valores d(ai) sea un cuadradoperfecto, necesitamos que la suma de los exponentes de cada factor primo deF sea par, que al trabajar con modulo 2, es equivalente a decir que necesitamosuna suma de vectores que posea todas las entradas nulas.

Por este motivo, para garantizar al menos un resultado, necesitamos tantoselementos como primos posee F . Como ya se comento anteriormente, una vezencontrada una suma que proporcione un vector nulo, comprobaremos si seobtiene un factor no trivial.

Una vez planteada la matriz se procedera a buscar una combinacion ded(ai) que proporcione un cuadrado mediante algun algoritmo como puede sereliminacion gaussiana.

Por ultimo solo quedara proceder como en el resto de algoritmos anteriorescuando tenemos congruencias de cuadrados, calcularemos el maximo comundivisor para comprobar ası si obtenemos un factor no trivial.

Ejemplo. Factorizar N = 87463 utilizando la criba cuadratica.

Solucion.

En primer lugar vamos a calcular los parametros M y B que determinaranel tamano del intervalo de criba y de la base de factores respectivamente.

Page 46: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

38 2.6. Criba cuadratica

B =

⌊(e√

ln(N) ln(ln(N)))√2

4

⌋= 6

M =

⌊(e√

ln(N) ln(ln(N))) 3√2

4

⌋= 264

De este modo ya tenemos el intervalo de criba [−264, 264]. Para formar labase de factores, necesitamos encontrar cinco numeros primos p que cumplan(N

p

)= +1 por lo que calculamos el valor del sımbolo de Legendre por la

definicion para unos cuantos. Es necesario tener en cuenta que, tanto −1 como2, siempre van a formar parte de nuestra base de factores F .

p 3 5 7 11 13 17 19 23 29(N

p

)1 −1 −1 −1 1 1 1 −1 1

Ya tenemos de esta forma nuestra base de factores

F = {−1, 2, 3, 13, 17, 19, 29} (2.87)

A continuacion debemos calcular para cada elemento p de F , los valoressp1 y sp2 como se indico en la ecuacion (2.86).

p 2 3 13 17 19 29

x 1 1, 2 5, 8 7, 10 5, 14 12, 17sp1, sp2 0 0, 1 9, 12 1, 4 4, 14 7, 12

Los valores sp1 y sp2 son los que nos indica para cada factor de nuestra baseF en que momento empieza la progresion aritmetica de numeros divisibles porp. Por ejemplo para p = 13 una de las progresiones comienza en d(a9) y otra end(a12). A continuacion se muestra una tabla que contiene el proceso de cribapara un pequeno subintervalo de [−M,M ] como es [0, 12].

Notar que b√Nc = 295. En la tabla no se muestran las potencias de cada

factor primo pero sera necesario almacenarlas, ademas de tenerlas en cuentaen la columna final.

Page 47: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 39

i i + b√

Nc d(ai) −1 2 3 13 17 19 29 d(ai) final

0 295 −438 × × × 731 296 153 × × 12 297 746 × 3733 298 1341 × 1494 299 1938 × × × × 15 300 2537 25376 301 3138 × × 5237 302 3741 × × 438 303 4346 × 21739 304 4953 × × 12710 305 5562 × × 10311 306 6173 617312 307 6786 × × × × 1

En este intervalo encontramos tres elementos que tienen la propiedad deser B-lisos, es decir, factorizan completamente en nuestra base de factores F .Este proceso deberıa realizarse sobre todo el intervalo de criba, es decir, parai ∈ [−264, 264]. No obstante, vamos a aplicar a estos tres numeros B-lisos elproceso de obtencion del vector de exponentes modulo 2.

d(ai) FactorizacionVector de

exponentesVector de

exponentes (modulo 2)

153 32 · 17 [0, 0, 2, 0, 1, 0, 0] [0, 0, 0, 0, 1, 0, 0]1938 2 · 3 · 17 · 19 [0, 1, 1, 0, 1, 1, 0] [0, 1, 1, 0, 1, 1, 0]6786 2 · 32 · 13 · 29 [0, 1, 2, 1, 0, 0, 1] [0, 1, 0, 1, 0, 0, 1]

Una vez acabado el proceso de criba, debemos tener al menos B+1 numerosque factoricen completamente sobre la base de factores para tener ası garan-tizado al menos un producto que sea cuadrado perfecto. En caso de no tenerB + 1 elementos, se debe repetir el proceso anterior ampliando el intervalo decriba.

A continuacion construimos una matriz A cuyas columnas son los vectoresde los exponentes modulo 2 de los numeros B-lisos y buscamos una solucion

Page 48: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

40 2.6. Criba cuadratica

para el sistema

1 1 0 0 0 01 0 0 1 1 01 1 0 1 0 00 1 0 0 1 01 0 1 1 0 10 0 0 1 0 00 1 0 0 1 0

· v = 0 (2.88)

Una posible solucion para el sistema anterior es v =

111010

Por lo tanto, la solucion involucra las cuatro primeras columnas, esto sig-

nifica que el producto de los cuatro numeros d(ai) = (i+ bNc)2−N asociadoses un cuadrado, es decir

x2 = (265 · 278 · 296 · 307)2 = 44816869024979257600 (2.89)

por otro lado, si tomamos

y2 = (2652 −N)(2782 −N)(2962 −N)(3072 −N) = 182178565001316 (2.90)

tenemos dos numeros cuadrados que cumplen

x2 ≡ y2 (mod N) (2.91)

ya que44816869024979257600 ≡ 10093 (mod N)

182178565001316 ≡ 10093 (mod N)(2.92)

pero por otro ladox 6≡ y (mod N) (2.93)

donde tenemos6694540240 ≡ 34757 (mod N)

13497354 ≡ 28052 (mod N)(2.94)

Llegados a este punto, solo queda comprobar si x e y proporcionan unfactor no trivial de N . Para ello calculamos

mcd(x+ y,N) = mcd(6708037594, N) = 587

mcd(x− y,N) = mcd(6681042886, N) = 149(2.95)

Por lo tanto concluimos que N = 587 · 149.

Page 49: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 41

2.7 Criba general del cuerpo de numeros

La criba general del cuerpo de numeros es uno de los algoritmos de factorizacionmas complejos aunque tambien es uno de los metodos mas rapidos a la horade factorizar numeros enteros con un tamano grande, considerando grande apartir de unos 110 dıgitos. En este apartado vamos a dar una idea de los pasosen los que se basa dicho algoritmo, sin entrar en profundidad ya que el estudiocompleto de este metodo de factorizacion es muy extenso, se puede consultaren The development of the number field sieve de A.K. Lenstra y H.W. Lenstra.

El primer paso para factorizar un numero N mediante la criba general delcuerpo de numeros consiste en encontrar un polinomio f(x) que sea irreducibleen Z[x] y que ademas tenga una raız m modulo N .

Para construir un polinomio en ZN [x] con una raız m podemos hacerloexpresando el numero N en base-m, es decir, expresamos N de la forma

N =r∑

k=0

akmk (2.96)

y tomamos el polinomio

f(x) =r∑

k=0

akxk (2.97)

suponemos que f(x) y de este modo ya tenemos un polinomio que cumple losrequisitos.

Los polinomios candidatos a ser utilizados en el algoritmo son muchos y noexiste un metodo para determinar cual sera el que mejor funcionara al aplicarla criba general del cuerpo de numeros a cada numero N .

El siguiente paso consiste en determinar el dominio sobre el que se va aaplicar el algoritmo. Para ello debemos especificar las distintas bases de factoresque vamos a utilizar. Necesitaremos tres bases de factores: la base del factorracional, la base del factor algebraico y la base del caracter cuadratico. Paradeterminar el tamano de las bases de factores lo haremos de forma empırica ydependera del tamano del numero a factorizar.

La base del factor racional contendra los numeros primos menores que unnumero w que representara la cota de la base. No obstante, la base del factorracional no almacenara solo dicha informacion, ya que cada numero primo pse guardara junto al valor p (mod m).

Page 50: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

42 2.7. Criba general del cuerpo de numeros

Por otro lado, la base del factor algebraico contendra un lista con los pares(p, r) donde los numeros p son numeros primos y r es el menor numero enterotal que f(r) ≡ 0 (mod p). El tamano de la base del factor algebraico debe sersuperior al de la base del factor racional.

Por ultimo la base del caracter cuadratico tendra una continuacion de labase del factor algebraico, es decir, pares de numeros primos y las raıces perocon unos cuantos numeros p mayores que los anteriores. El tamano de estabase de factores sera inferior al de las anteriores.

El siguiente paso consiste en realizar una criba. Este es el cuello de botelladel algoritmo ya que se realizan operaciones muy costosas en terminos compu-tacionales sobre dominios muy grandes, por lo tanto la mayor parte del tiempodel algoritmo se invierte en este paso.

El proceso de criba persigue el objetivo de encontrar pares de numeros(a, b) que cumplan

• mcd(a, b) = 1

• a+ bm tiene todos sus factores en la base del factor racional

• (−b)df(ab) tiene todos sus factores en la base del factor algebraico.

Para ello, tomaremos b fijo y variaremos a en un intervalo [−C,C] cuyotamano dependera directamente del tamano del numero a factorizar. Si el valorescogido para C no es suficientemente grande, deberemos tomar un numero Csuperior. De esta forma calcularemos para los pares (a, b) los factores de a+bmy de aquellos que factoricen en la base del factor racional, nos quedaremoscon aquellos para los que (−b)df(a

b) tenga los factores en la base del factor

algebraico.

Una vez hemos obtenido una lista de pares (a, b) que cumplen las pro-piedades requeridas, el objetivo es encontrar un subconjunto de la lista cuyoproducto sea un numero cuadrado. Nuevamente no necesitamos encontrar enla lista numeros cuadrados, nos basta con que el producto de varios de ellossea un numero cuadrado.

Este paso se puede llevar a cabo resolviendo un sistema de ecuacioneslineales, ya que incluso para matrices de un tamano elevado, como el sistemasolo contendra un 1 en las posiciones de los numeros primos que aparezcancomo factor con potencia impar y un 0 en las posiciones de los numeros primos

Page 51: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Capıtulo 2. Algoritmos de factorizacion 43

que aparezcan como factor con potencia par o no aparezcan como factor, sepodra resolver de un modo relativamente eficiente.

Una vez se obtiene una solucion al sistema, es decir, cuando tenemos nume-ros x e y cuyos cuadrados son congruentes modulo N , se procede como en elresto de algoritmos calculando mcd(x − y,N) y mcd(x + y,N) para ver siobtenemos un factor no trivial de N .

Page 52: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos
Page 53: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Conclusiones

En este Trabajo de Fin de Grado he realizado un repaso general a la evolucionde los algoritmos de factorizacion. En un primer lugar hemos visto que hasta laaparicion de las computadoras, los algoritmos existentes no permitıan realizarfactorizaciones de numeros grandes. Ha sido tras la aparicion de estas cuandose han desarrollado algoritmos potentes que consiguen hallar los factores denumeros mayores. No obstante, la rapida evolucion de las computadoras per-mite que continuamente se desarrollen nuevos metodos que consiguen mejorarlos resultados.

Para el desarrollo de este trabajo he necesitado el uso de algunos conceptossobre teorıa de numeros que estan directamente relacionados con la base teoricade ciertos algoritmos. Tambien he necesitado comprender ciertos apartadosmas relacionados con criptogra que internamente estan basados en algoritmosde factorizacion.

45

Page 54: TRABAJO FIN DE GRADO Factorización · PDF filepero en este caso tenemos 1182 13837 = 87, que no es un cuadrado. En este momento incrementamos xen uno, por lo que x= 119 y repetimos

Referencias

[1] D.M. Bressoud, Factorization and Primaly Testing. Springer-Verlag, 1989.

[2] R. Crandall and C. Pomerance, Prime Numbers. A Computational Pers-pective. Springer, 2005.

[3] H. Riesel, Prime Numbers and Computer Methods for Factorization.Birkhauser, 1994.

[4] W. Stein, Elementary Number Theory: Primes, Congruences and Secrets.Springer, 2008.

[5] F.J. Smith, A Brief History of Factorization Techniques. University ofWashington, 2006.

[6] L.S. Carrasco Factorizacion de Enteros. Universidad Autonoma Metropo-litana, 2012.

46