Breve Rese˜ na sobre la Hip´ otesis de Riemann, Primalidad y el algoritmo AKS Jos´e de Jes´ us Angel Angel
Guillermo Morales-Luna
Secci´on de Computaci´on CINVESTAV-IPN, Mexico
[email protected] Secci´on de Computaci´on CINVESTAV-IPN, Mexico
[email protected] M´exico, D.F., a 5 de junio de 2005. Resumen En este reporte describimos los principios b´ asicos de algunos algoritmos de primalidad, partiendo de una breve explicaci´ on de la hip´ otesis de Riemann, uno de los 7 problemas del milenio, que tiene como premio un mill´ on de d´ olares ofrecido por el Clay Mathematical Institute. Puntualizamos la relaci´ on de la hip´ otesis de Riemman con las pruebas de primalidad, y finalmente detallamos el algoritmo de Agrawal, Kayal y Saxena. Comentamos, tambi´en, algunos de sus u ´ltimos perfeccionamientos.
1
Nociones sobre la hip´ otesis de Riemann
El concepto de n´ umero primo ha existido a lo largo de toda la historia de la humanidad. En un hueso encontrado en el Africa Central que data alrededor de 20 000 a˜ nos antes de Cristo, se encontraron se˜ nas que pudieran ser los n´ umeros 11, 13, 17, y 19 y hay, en consecuencia, quienes interpretan esto como indicios de que la gente del Pleistoceno conoc´ıa ya a los n´ umeros primos. Lo que es un hecho, es que en la antigua Grecia, en la escuela de Pit´agoras (500 a˜ nos a.c.), ya se ten´ıa bien entendido qu´e era un n´ umero primo y un n´ umero compuesto. Tiempo despu´es, en las obras de Euclides se incluye la demostraci´on de la existencia de una cantidad infinita de n´ umeros primos. Enseguida Erat´ostenes describe su criba, con la que se pod´ıa encontrar los primeros n´ umeros primos. Desde entonces, las teor´ıas alrededor de los n´ umeros primos han sido cimientos fundamentales en la actual teor´ıa de n´ umeros. Un buen inicio de la relaci´on de los n´ umeros primos con la hip´otesis de Riemann, es la noci´on intui-
x 105 107 109 1011 1013 1016 1021 1024
π(x)/ lnxx 1.104 1.071 1.054 1.043 1.036 1.028 1.021 1.019
Tabla 1: Aproximaciones de π(x) tiva de que los n´ umeros primos “grandes” se van separando cada vez m´as, sin embargo siempre se encuentran con cierto comportamiento “uniforme”. Algo as´ı como pintar los primeros primos en una liga, estirar la liga y tener a los primos en un intervalo m´as grande. Veamos de manera un poco m´as formal c´omo se formula la idea anterior. Definici´ on 1 (Funci´ on de Euler)PSe define la funci´ on π : R → N, x 7→ π(x) = p≤x 1, donde el ´ındice p var´ıa s´ olo en los n´ umeros primos. Es decir, la funci´on π cuenta los n´ umeros primos menores a x, por ejemplo, π(20) = 8, π(100) = 25. En 1792 Gauss estableci´o con evidencias num´ericas la relaci´on π(x) =1 lim x→∞ x/ ln x conocida como el Teorema de los N´ umeros Primos (TNP). Algunos c´alculos de ejemplo los podemos ver en la tabla 1 Independientemente, Legendre demuestra que la funci´on π puede aproximarse mediante una de la forma
x 7→ x/(A log x + B), y da como valores A = 1, B = −1.08366. Alrededor del a˜ no 1852 Chebyshev demostr´o que 0.92129 lnxx < π(x) < 1.1056 lnxx , y m´as rigurosamente, puesto con notaci´on moderna, demostr´o que π(x) = Ω(x/ ln x), es decir, que el cociente (π(x) ln x)/x, est´a acotado tanto inferior como superiormente. En 1892 Sylvester realiza un refinamiento a esta aproximaci´on: 0.95695 lnxx < π(x) < 1.04423 lnxx . Alrededor de 1896 J. Hadamard y C.-J. De la Vall´ee-Poussin proporcionaron independientemente sendas demostraciones del TNP. Por otro lado, se ha considerado a Euler como quien introdujo la famosa funci´on s 7→ ζ(s) =
∞ X 1 s n n=1
que es convergente para cualquier real s > 1, y ´el mismo demostr´o la relaci´on Y ζ(s) = (1 − p−s )−1 . p primo
llamada producto de Euler, la cual apareci´o por primera vez en su libro “Introductio in Analysin Infinitorum”. De hecho ya eran conocidos casos particulares de esta funci´on en t´erminos de series. P∞ Por ejemplo, para s = 1 resulta la serie arm´onica n=1 n1 , que ya desde 1350 N. d’Oresme hab´ıa demostrado ser divergente. En 1735, Euler muestra que para el caso P∞ 2 4 s = 2, ζ(2) = n=1 n12 = π6 , con s = 4 ζ(4) = π90 , y, de hecho, trabaj´o los casos pares llegando a calcular hasta ζ(26). Actualmente se sabe que para valores enteros pares tenemos la relaci´on, ζ(2k) =
22k−1 π 2k (−1)k+1 B2k , (2k)!
donde B2k es llamado un n´ umero de Bernoulli. Desafortunadamente Euler no obtuvo nada acerca de los casos impares y hoy se sabe que ζ(3) es un n´ umero irracional (R. Apr´ery, 1978). Una consecuencia importante que proporciona la funci´on ζ es otra demostraci´on de la existencia de una infinidad de n´ umeros primos. En efecto, esto es una consecuencia de que ζ(s) → ∞, cuando s → 1. Por otro lado en 1859 Riemann edita un manu¨ scrito titulado “Uber die Anzahl der Primzahlen unter einer gegerbenen Gr¨ osse”, (“Sobre el n´ umero de primos menores que una magnitud dada”), que es visto hoy como uno de los m´as c´elebres escritos de las matem´aticas cl´asicas. En ´el, Riemann estudia la
ΖHxL 0.1 0.05
-14
-12
-10
-8
-6
-4
-2
Hx 1. 2. ζ no tiene ceros en la l´ınea Re(z) = 1. Este hecho implica en TNP. Por lo tanto las u ´nicas tres posibilidades respecto a los ceros de ζ son las siguientes: 1. Los ceros que est´an fuera de la franja 0 < Re(z) < 1 son enteros negativos pares reales, es decir −2, −4, −6, −8, . . . Estos son los u ´nicos ceros fuera de la franja citada y son llamados ceros triviales de ζ, o ceros reales, ya que ning´ un otro cero es real. Que ´estos sean ceros resulta, por un lado, al expresar la funci´on de Riemann en t´erminos h i n+1 ,y de los n´ umeros de Bernoulli ζ(−n) = − Bn+1 tambi´en de la forma equivalente demostrada por Euler, µ ¶ ∞ n X 1 1 X k n ζ(z) = (−1) (k+1)−z . 1 − 21−z n=0 2n+1 k k=0
En la gr´afica 1 se muestra el eje real negativo, donde se puede observar los ceros triviales de ζ. 2. Los ceros que est´an en la franja 0 < Re(z) < 1 son llamados ceros no-triviales de ζ y hay una
AbsHΖH12+ yiLL 3.5 3 2.5 2 1.5 1 0.5 10
20
30
40
50
H12,yiL
Gr´afica 2: Ceros de la funci´on real y 7→ 1/2 + yi. y : ζ(1/2 + yi) = 0 14.134725142 40.918719012 21.022039639 43.327073281 25.010857580 48.005150881 30.424876126 49.773832478 32.935061588 52.970321478 37.586178159 56.446247697
a˜ no 1903 1914 1925 1935 1958 1966 1968 1977 1979 1983 1986 2001 2004 2004
n 15 79 138 1,041 35,337 250,000 3,500,000 40,000,000 81,000,001 300,000,001 1,500,000,001 10,000,000,000 900,000,000,000 10,000,000,000,000
Tabla 3: N´ umero de ceros no-triviales de ζ conocidos en las fechas indicadas.
Tabla 2: Las ordenadas de los primeros ceros notriviales de ζ cantidad infinita de ellos. Los ceros no-triviales no son reales por lo que son llamados tambi´en ceros complejos. 3. Los ceros que han podido ser calculados est´an sobre la l´ınea cr´ıtica Re(z) = 1/2, y tienen la forma 1/2 + yi con y 6= 0. En la tabla 2 las ordenadas de los primeros ceros que se conocen quedan enlistadas, y en la gr´afica 2 se les puede observar, al graficar la funci´on real y 7→ |ζ(1/2 + iy)|. Riemann formula entonces su conjetura acerca de los ceros no triviales: Conjetura 1 (Hip´ otesis de Riemann (HR)) Todos los ceros no triviales de ζ que est´ an dentro de la franja ya mencionada est´ an en la l´ınea cr´ıtica Re(z) = 1/2. Hasta la fecha nadie ha podido demostrar que la conjetura de Riemann sea verdadera, o por el contrario, ha podido dar un contraejemplo. Este es uno de los problemas no-resueltos m´as importantes de las matem´atias modernas. Lo que se tiene es s´olo evidencia num´erica de que la conjetura es cierta, en los aproximadamente 1013 primeros ceros. La cantidad de ceros calculados hasta la fecha los podemos ver en la tabla 3.
Gr´afica 3: Distribuci´on de Primos. De todo esto resulta, entonces, una ´ıntima relaci´on entre los n´ umeros primos y la funci´on ζ. De manera visual es posible captar esa relaci´on. En las gr´aficas 3 y 4 mostramos patrones de n´ umeros primos y de ceros de zeta. Tomamos muestras de 50 primos y de 50 ceros de ζ, ´estos de alguna forma aleatoria. Se observa que el comportamiento en su distribuci´on es “parecido” y casi no cambia. Esto puede verse mejor al tomar una mayor cantidad de muestras. Tal relaci´on se puede establecer de manera formal en la siguiente versi´on de la HR. Definici´ on 2 La integral logar´ıtmica Li(x) est´ a
Gr´afica 4: Distribuci´on de ceros de ζ
definida por
Z Li(x) = 2
x
dt log t
Entonces se puede reescribir la hip´otesis de Riemann como: π(x) = Li(x) + O(x1/2+² ). Otras dos maneras equivalentes de la hip´otesis de Riemann se plantean como sigue: Definici´ on 3 Sean ψ y ϑ definidas como: X x 7→ ψ(x) = {log p|k ∈ N , p primo , pk ≤ x} x 7→
= log mcm{i|1 ≤ i ≤ bxc} X ϑ(x) = log p p≤x
Si hubiese alrededor de 1080 mol´eculas en todo el Universo, y mucho menos de 1010 individuos en el mundo, no es dif´ıcil darse cuenta que “nunca” se teminar´an los primos a ser usados como certificados digitales. Por otra parte, el TNP implica que dado un n´ umero x, entonces tenemos x/(ln x) n´ umeros primos menores a x, as´ı el “y” donde “aparece” el siguiente n´ umero primo, se sigue de que ln(x) ∼ ln(y), y de la relaci´on y/(ln y) = x/(ln x) + 1. Esto quiere decir que si tenemos alg´ un primo de alg´ un p, el siguiente “aparecer´a” en una distancia aproximada de ln(p). En nuestro caso, s´olo tendremos que recorrer alrededor de ln(2509 ) ∼ 352 enteros, a partir de alg´ un n´ umero aleatorio para encontrar un n´ umero primo. Por lo que las dudas referentes a los n´ umeros primos en certificados digitales est´an resueltas en la pr´actica.
Entonces la hip´otesis de Riemann queda como: ψ(x) = x + O(x1/2+² ) ϑ(x) = x + O(x1/2+² )
1.1
Aplicaci´ on del TNP en Criptograf´ıa
Como una aplicaci´on simple del TNP en criptograf´ıa tenemos lo siguiente: En la pr´actica son muy comunes los certificados digitales. Un certificado digital consiste esencialmente de una clave p´ ublica, de los datos del propietario del certificado y de una firma digital de quien emite el certificado. La clave p´ ublica en un certificado RSA es un n´ umero entero producto de dos n´ umeros primos, casi del mismo tama˜ no. Una de las preocupaciones m´as populares es saber con certeza si acaso los n´ umeros primos que componen la clave p´ ublica no podr´an repetirse. M´as a´ un, se trata de saber si hay suficientes n´ umeros primos para una cantidad considerable de certificados digitales, o alternativamente si acaso es posible siempre encontrar n´ umeros primos. La respuesta positiva a esto se implica si es posible contar los n´ umeros primos y saber de qu´e manera est´an distribuidos. Es entonces que el TNP puede resolver claramente estas dudas. Primero, si se quiere primos de 512 bits, entonces ´estos pueden buscarse en el intervalo [2508 , 2509 ]. El TNP garantiza que en ese intervalo se puede encontrar aproximadamente π(2509 ) − π(2508 ) primos, es decir alrededor de 509
508
2 2 − 509 ln (2 ) ln (2508 )
= (4.75034 − 2.37984) · 10150 = 2.37049 · 10150 .
2
Nociones sobre la Hip´ otesis de Riemann Extendida
Ahora, de la misma manera que en la hip´otesis de Riemann, en la versi´on extendida existen varias maneras de escribirla, veamos algunas de ellas. Definici´ on 4 La funci´ on Lp : C → C se define como: ∞ µ ¶ X n 1 Lp (z) = p nz n=1
³ ´ donde
n p
es el llamado s´ımbolo de Legendre.
Entonces la Hip´ otesis Extendida de Riemann (HER) se plantea como: todos los ceros no-triviales de z 7→ Lp (z) tienen parte real 1/2. Por otra parte, intuitivamente podemos observar que los n´ umeros primos est´an “igualmente” distribuidos en diferentes clases de residuos m´odulo un n´ umero n. Por ejemplo, entre los 1229 primos menores a 10000, 611 son congruentes con 1 y 617 lo son con 2, m´odulo 3. Es bien conocido el siguiente resultado acerca de los residuos de primos m´odulo un n´ umero n. Teorema 1 (Dirichlet) Si mcd(a, n) = 1 entonces hay una cantidad infinita de n´ umeros primos congruentes con a m´ odulo n. Una manera m´as concreta de este teorema se tiene en la siguiente definici´on. Observamos primero que si los n´ umeros primos estuviesen equi-distribuidos en las clases de congruencia m´odulo n, entonces debe haber un “mismo” n´ umero
de primos en cada una de las que contengan primos. Como hay ϕ(n) de tales clases (ϕ denota a la funci´on cl´asica de Euler que cuenta para cada entero cu´antos enteros existen menores que ´el y primos relativos con ´el), por el TNP “deber´ıa” haber alrededor de x/(ϕ(n) ln x) primos en cada una de tales clases de congruencia. Con lo cual queda motivada la siguiente
Input: n ≥ 3 Output: A decision whether n is PRIME or COMPOSITE √ 1.- For r = 2 to b nc do 2If r|n then Output COMPOSITE 3.- Output PRIME
Definici´ on 5 Para tres enteros positivos x, a, n, con a < n, sea Π(x, n, a) el conjunto de primos congruentes con a m´ odulo n que son menores a x. Sea, ahora, π : (x, n, a) 7→ π(x, n, a) = card(Π(x, n, a))
Tabla 4: M´etodo Ensayar Divisiones
Por ejemplo π(10000, 3, 1) = 611, π(10000, 3, 2) = 617. La HER tambi´en puede ser planteada de manera equivalente si tomamos dos enteros n y a primos relativos y ² > 0. Entonces se ha de tener, π(x, n, a) =
Li(x) + O(x1/2+² ). φ(n)
Finalmente, una u ´ltima versi´on de HER la escribiremos despu´es de la siguiente definici´on. Definici´ on 6 Un car´acter sobre un grupo abeliano G es un homomorfismo de G al c´ırculo unitario S 1 = {z ∈ C|zz = 1} (este u ´ltimo dotado de la multiplicaci´ on de n´ umeros complejos). Sea µ un car´acter sobre Z∗n , entonces se define el car´ acter de Dirichlet χ : Z∗ → S 1 como: ½ µ(m mod n) si mcd(m, n) = 1 χ(m) = 0 en otro caso Si χ asume s´olo valores 0 o 1, se dice ser principal. La funci´ on de Dirichlet L es entonces z 7→ L(z, χ) =
X χ(n) . nz
n≥1
La HER afirma que todos los ceros de L tienen parte real 1/2. Para intentar explicar el uso de la HER, veamos el siguiente ejemplo: Sup´ongase que se quiere encontrar un residuo no-cuadr´atico b m´odulo un n´ umero primo p. Se sabe por observaciones que los residuos cuadr´aticos y los no cuadr´aticos est´an distribuidos de manera irregular. El primer impulso para encontrar una tal b es intentar con 2, 3, 4, . . . hasta encontrarlo. Se puede observar que al variar el primo p, este n´ umero buscado no es muy grande, salvo para pocos primos p. Entonces es posible calcular el tiempo que nos costar´a encontrar tal b. Si la HER fuese cierta, v´ıa la formulaci´on anterior, entonces podemos tener una certidumbre de que existe una cota b0 para la b´ usqueda. Por lo
tanto basta buscar en 2, 3, 4, .., b0 . Esto fue probado de manera formal por N. Ankeny [4], y fue generalizado para encontrar elementos fuera de un conjunto por E. Bach [5].
3
Antecedentes de Primalidad
El problema de primalidad consiste en decidir si un n´ umero n dado es primo o compuesto. Este problema ha sido sin duda uno de los m´as importantes a lo largo de la historia. La criba de Erat´ ostenes es el m´etodo m´as antiguo (200 A.C.) para decidir si un n´ umero n dado es primo o compuesto. Este m´etodo se basa en el hecho de construir una tabla de todos los n´ umeros enteros positivos del 2 hasta n. Comenzando con el 2, declarado primo, se tacha a todos los m´ ultiplos de ´el menores que n. Se regresa la inicio de la lista y se prosigue con el siguiente n´ umero no tachado, que obviamente es el 3, se le declara primo y se cancela ahora a todos los m´ ultiplos de 3, que no hubiesen sido cancelados. Se regresa y se repite esto hasta que no queden primos o n´ umeros por cancelar. Entonces se tendr´a por conocidos a todos los factores primos de n o bien se podr´a reconocer que n es primo. Como consecuencia de la criba de Erat´ostenes, tenemos el m´etodo de “Ensayar divisiones”. Este m´etodo se basa en el hecho de que es suficiente verificar, para √n dado, si acaso todos los n´ umeros primos menores a n no lo dividen, y entonces n debe ser un n´ umero primo. Ya que cuando n es compuesto, digamos n = √ ab, entonces uno de los factores es menor o igual a n. Este procedimiento se puede ver en la tabla 4 y a´ un es u ´til, en el caso que se quiera encontrar n´ umeros primos peque˜ nos. Es bien conocido desde el siglo XVII, el Teorema Peque˜ no de Fermat (TPF): Si a > 0 es un n´ umero entero positivo y p es un n´ umero primo, con mcd(a, p) = 1, entonces ap−1 ≡ 1 mod p. La proposici´on rec´ıproca, sin embargo, no es cierta: si ap−1 ≡ 1 mod p, para todo a, con mcd(a, p) = 1,
Input: n ≥ 3 Output: A decision whether n is PRIME or COMPOSITE 1.- Choose randomly a ∈ {1, 2, . . . , n − 1}. 2.- If gcd(a, n) 6= 1 then COMPOSITE; stop else ¡ ¢ 3.If na 6≡ a(n−1)/2 mod n then COMPOSITE; stop 4.else PRIME.
entonces p no necesariamente es un n´ umero primo. Esto significa que hay n´ umeros compuestos n tales que, para todo a con mcd(a, n) = 1, se cumple la relaci´on an−1 ≡ 1 mod n. R. Carmichael encontr´o por el a˜ no de 1910 uno de tales n´ umeros compuestos, a saber, n = 561 = 3 · 11 · 17. A partir de aqu´ı a estos n´ umeros se les llama n´ umeros de Carmichael. Una forma equivalente al TPF es que si existe un n´ umero a con mcd(a, n) = 1 y an−1 6≡ 1 mod n, entonces n es un n´ umero compuesto. Lo anterior da un m´etodo para decidir si un n´ umero es compuesto, sin embargo es posible tambi´en usar el TPF para encontrar n´ umeros “que parecen primos”. El procedimiento consiste en fijar un n´ umero a, que llamaremos testigo, y evaluar an−1 mod n. Si el resultado es diferente de 1, entonces el n´ umero es claramente compuesto, pero si el resultado es 1, entonces el n´ umero n es un candidato a ser primo. Lo llamaremos entonces un seudoprimo respecto al testigo a. El detalle aqu´ı es ver qu´e tan “fuerte” es la candidatura de n a que sea primo. La respuesta a esto es que los n´ umeros de Carmichael son muy raros, por lo que existe una considerable probabilidad de que si n es un seudoprimo respecto a un testigo a, entonces realmente n ha de ser primo. Para prop´ositos pr´acticos no son muy molestos los n´ umeros de Carmichael. Por ejemplo, R. Rivest verific´o que de 718 millones de n´ umeros aleatorios de 128 bits de longitud, de los cuales 4 millones fueron seudoprimos respecto al testigo 2, ninguno dej´o de cumplir la prueba de primalidad m´as fuerte de la ´epoca. Hoy en d´ıa se sabe que aunque son raros los n´ umeros de Carmichael hay una cantidad infinita de ellos, lo cual fue mostrado en 1992 por W. Alford, G. Granville y C. Pomerance. El u ´ltimo de tales n´ umeros fue encontrado en 1998 y tiene 10200 d´ıgitos decimales. La discusi´on anterior nos lleva a pensar que es posible calcular y controlar la probabiliad de error en el caso de generar un n´ umero seudoprimo. De hecho, esto es la base de los algoritmos probabil´ısticos, los cuales son algoritmos que determinan si acaso un n´ umero es compuesto y si se falla en esto, entonces se declara como primo probable, con una probabilidad peque˜ na y controlada de error. En la siguiente secci´on hablaremos de c´omo la HER influye en esos algoritmos para suprimir su car´acter aleatorio.
Tabla 5: Algoritmo Aleatorio de Solovay-Strassen
4
Prueba de primalidad de SolovayStrassen
Nuestro prop´osito en esta secci´on es ver que en el m´etodo de Solovay-Strassen, que es un algoritmo aleatorio, puede ser omitida su aleatoriedad bajo la suposici´on de que la HER es verdadera. El m´etdo de Solovay-Strassen se presenta en la tabla 5. Lema 1 Si n es un primo impar, entonces el algoritmo aleatorio de Solovay-Strassen produce el resultado PRIME, y si n es un compuesto impar produce COMPOSITE al menos para la mitad de posibles a ∈ {1, 2, . . . , n−1}. El algoritmo corre en tiempo polinomial, respecto al “tama˜ no de n”. Su complejidad en tiempo es, precisamente, O(log n)3 . Como ya se sabe, este m´etodo es para certificar realmente composici´on, en lugar de primalidad. En lo que sigue se dar´an las herramientas para demostrar el lema 1. Definici´ on 7 (S´ımbolos de Jacobi y Legendre) Sea n un n´ umero entero impar con factorizaci´ on Q ei pi . Entonces el s´ımbolo de Jacobi de un entero ¡ ¢ Q³ a ´ a, respecto a n, es na = pi , donde para cada ³ ´ primo pi , pai es el s´ımbolo de Legendre: vale 1, si a es un residuo cuadr´ atico m´ odulo pi y vale −1 en otro caso. El criterio de Euler consiste en que si p es un n´ umero primo impar y a es un entero tal que mcd (a, p) = 1 entonces a es un residuo cuadr´atico m´odulo p siempre que a(p−1)/2 ≡ 1 mod p y no lo es si a(p−1)/2 ≡ −1 mod p. Definici´ on 8 Se define el grupo de falsos testigos de Euler, para un entero n, como o n ³a´ ≡ a(n−1)/2 mod n . E(n) = a ∈ Z∗n | n
Input: n ≥ 3 Output: A decision whether n is PRIME or COMPOSITE 1.- For a = 2 to 2(log n)2 do 2.- If mcd (a, n) 6= 1 then COMPOSITE else ¡ ¢ 3.- If na 6≡ a(n−1)/2 (modn) then COMPOSITE 4.- PRIME Tabla 6: Algoritmo No-aleatorio de Solovay-Strassen Por ejemplo E(65) = {1, 8, 14, 18, 47, 51, 57, 64}. Lema 2 Sea n un n´ umero entero impar mayor que 1. Entonces n es primo si y s´ olo si E(n) = Z∗n . Ahora estamos listos para probar el lema 1. Si n es un primo impar, el primer condicional “If” en el algoritmo no se satisfar´a nunca. En ese caso, de la definici´on del s´ımbolo de Legendre este paso regresar´a siempre PRIME. Si n es un n´ umero compuesto impar, entonces si mcd(a, n) 6= 1, el primer condicional regresa COMPOSITE, en caso contrario a ∈ Z∗n , y por el lema anterior E(n) 6= Z∗n . Pero como E(n) es un subgrupo de Z∗n , entonces E(n) debe ser un subgrupo propio. Por lo tanto, |E(n)| ≤
|Z∗n | φ(n) (n − 1) n = ≤ ≤ . 2 2 2 2
Y con probabilidad mayor o igual a 1/2, a ha de ser un falso testigo de Euler para la composici´on de n, con el cual el algoritmo regresa COMPOSITE. ¡ ¢ Por otro lado se sabe que para el c´alculo de na se toma un tiempo O((log n)2 ), mientras que el c´alculo de a(n−1)/2 mod n requiere O((log n)3 ). Esto termina la demostraci´on. ¤ El algoritmo de Solovay-Strassen puede reescribirse para convertirlo en un algoritmo no-aleatorio, seg´ un se puede ver en la tabla 6. La diferencia de los dos algoritmos se encuentra en la elecci´on de a: el primero lo hace aleatoriamente y el segundo por medio de un ciclo “For” desde a = 2 hasta 2(log n)2 . Los siguientes resultados nos permitir´an ver que esta variaci´on del algoritmo es correcta. Definici´ on 9 Para cada entero positivo n, sea G(n) = min {x|Z∗n es generado por primos ≤ x} .
Teorema 2 (Ankeny) Suponiendo verdadera la HER, entonces G(n) = O((log n)2 ), y para cada subgrupo H no trivial de Z∗n se puede encontrar un a ∈ Z∗n − H en tiempo O((log n)2 ). En diversas situaciones, se requiere encontrar un n´ umero fuera de cierto subgrupo propio de Z∗n . Por el teorema de Ankeny y la generalizaci´on de Bach, tales n´ umeros son f´aciles de ser encontrados y lo son mediante una b´ usqueda directa en lugar de una aleatoria. El teorema de Ankeny implica el siguiente, el cual finalmente nos permitir´a llegar al objetivo que nos hemos planteado. Teorema 3 Suponiendo vedadera la HER, si n es un n´ umero entero impar compuesto, entonces existe un entero positivo a ≤ 2(log n)2 , para el cual se cumple dos relaciones siguientes: mcd (a, n) 6= 1 o ¡una ¢ de las a (n−1)/2 ≡ 6 a mod n. n En efecto, sea n es un n´ umero entero impar compuesto. Por el lema anterior, E(n) es un subgrupo propio no-trivial de Z∗n . Por el teorema de Ankeny, se puede localizar un elemento a ∈ Zn − E(n) en tiempo O((log n)2 ), puesto que el complemento Zn − E(n) es un subgrupo no-trivial de Z∗n . La cota espec´ıfica en tiempo es 2(log n)2 . Si a¡ ∈ /¢Z∗n entonces mcd (a, n) 6= a ∗ 1. Si a ∈ Zn , entonces n 6≡ a(n−1)/2 mod n puesto que a no est´a en E(n). ¤ Finalmente: on Teorema 4 Suponiendo verdadera la HER, la versi´ no-aleatoria del algoritmo de Solovay-Strassen, regresa PRIME si y s´ olo si n es primo, y lo hace en tiempo polinomial. En efecto, por el teorema 3, si n es compuesto, uno de los dos “If” del algoritmo regresa COMPOSITE. En caso contrario, n debe ser primo. Ya que s´olo se est´a probando hasta 2(log n)2 valores de a, el tiempo polinomial es pr´acticamente una consecuencia de que el algoritmo original corre tambi´en en tiempo polinomial. ¤
5
Algoritmo de Miller Rabin
De manera similar al algoritmo de SolovayStrassen, el de Miller-Rabin, el cual se bosqueja en la tabla 7, es un algoritmo aleatorio que puede evitar esa aleatoriedad bajo la suposici´on de la HER. umero primo impar, enTeorema 5 Si n es un n´ tonces el algoritmo de Miller-Rabin regresa siempre
Input: n ≥ 3 Output: A decision whether n is PRIME or COMPOSITE 1.- Choose a at random from {1, 2, . . . , n − 1} 2.- Express n − 1 = 2s t, t odd. 3.- Compute successively a0 = at mod n, a1 = a20 mod n, . . . , ak = a2k−1 mod n until k = s or ak ≡ 1 mod n 4.- If (k = s) and ak 6≡ 1 then COMPOSITE 5.- else If (k = 0) then PRIME 6.else If (ak−1 6≡ −1) then COMPOSITE 7.else PRIME
3. Se tiene un algoritmo para factorizar polinomios en Fp [X] [28]. 4. Existe un algoritmo para calcular el n´ umero de clase h∆ del grupo de clase C∆ , adem´as de otros algoritmos para el mismo grupo [22]. 5. Existe un m´etodo que garantiza la suavidad de ciertos n´ umeros, es decir, el que estos n´ umeros puedan factorizarse con primos acotados por un b adecuado [22].
PRIME. si n es compuesto entonces el algoritmo regresa COMPOSITE, para al menos 3/4 de todos los a’s tales que 1 ≤ a ≤ n − 1. El algoritmo tiene una complejidad de tiempo O((log n)3 ).
En [5] se puede encontrar una gran cantidad de resultados de la Teor´ıa de N´ umeros apoyados en la suposici´on de la HER. Otro de los campos abundantes en aplicaciones de la HER es la F´ısica, particularmente en aplicaciones relativas al movimiento browniano, osciladores arm´onicos, ruido, caos y, en general, mec´anica estad´ıstica. Tambi´en en la existencia de ciertos esquemas de compartici´on de secretos en criptograf´ıa.
Bajo la suposici´on de la HER, una vez m´as, el cambio del algoritmo para suprimir la aleatoriedad est´a en cambiar la instrucci´on
7
Tabla 7: Algoritmo Aleatorio de Miller-Rabin
Choose a at random from {1, 2, . . . , n − 1} por la instrucci´on For a = 1 to 2(log n)2 do Se sugiere para prop´ositos de implementaci´on elegir el algoritmo de Miller-Rabin (MR) en vez del algoritmo de Solovay-Strassen (SS). En primer lugar porque en SS hay que evaluar el s´ımbolo de Jacobi y en segundo, la probabilidad de error en SS es 1/2, mientras que en MR es 1/4.
6
Otras aplicaciones de la conjetura de Riemann
Como vemos, una de las m´as importantes conjeturas es la HER. En esta secci´on simplemente mencionaremos algunos resultados en diferentes ´areas, que bajo la suposici´on de que la HER es v´alida, ellos tambi´en son v´alidos. Existen cientos de aplicaciones y las aqu´ı enlistadas forman una peque˜ na muestra, repetimos, siempre suponiendo la HER. 1. En la versi´on de campos num´ericos algebraicos, se ha demostrado la conjetura original de Artin [18]. 2. Se tiene una diversidad de algoritmos para campos finitos [26].
El algoritmo AKS
En esta secci´on describimos el algoritmo de Agrawal, Kayal y Saxena (AKS) de una manera que estimamos simple. Al u ´ltimo mencionamos algunas modificaciones que se han propuesto para mejorar su eficiencia.
7.1
Historia
Uno de los problemas m´as estudiados en la historia de las matem´aticas, como aqu´ı ya lo hemos mencionado, ha sido el determinar si un n´ umero es primo o compuesto: desde la criba de Erat´ostenes, pasando por Fermat, Lucas, y ya en nuestros tiempos, SolovayStrassen y Miller-Rabin. En 1983, Adleman, Pomerance y Rumely presentan el primer algoritmo determinista, que ¢posee una ¡ complejidad en tiempo O k log nc log log log n . Este algoritmo es conocido como el m´etodo ciclot´ omico por usar precisamente los polinomios ciclot´omicos, sin embargo, no es f´acil de implementar. En 1986, Goldwasser y Killian proponen un algoritmo basado en curvas el´ıpticas, corriendo a un tiempo polinomial. Sin embargo es poco eficiente en la pr´actica. Atkin propone otro algoritmo conocido como Elliptic Curve Primality Proving (ECPP) que es m´as eficiente en la pr´actica. Finalmente en 1992, Adleman y Huang modifican el algoritmo de Goldwasser y Killian para obtener un algoritmo probabil´ıstico polinomial que
Input: n ≥ 1 Output: A decision whether n is PRIME or COMPOSITE 1.- If (n = ab ), with a ∈ N, b > 1, then output COMPOSITE 2.- else r = 2 3.- While (r < n) do { 4.If ( mcd (n, r) 6= 1) then output COMPOSITE 5.else If (r is prime) then 6.let q be the largest prime factor of r − 1 r−1 √ 7.If (q ≥ 4 r log n) and n q 6≡ 1 mod r 8.then break: 9.r := r + 1 10.} √ 11.- For a = 1 to 2 r log n do 12.If (x − a)n 6≡ (xn − a)mod (xr − 1, n) then output COMPOSITE 13.else output PRIME Tabla 8: Algoritmo AKS-2002
siempre produce un n´ umero primo. Hasta agosto del 2002, el mejor algoritmo determinista era el de Adleman, Pomerance y Rumely con una complejidad superpolinomial y algunas modificaciones debidas a Mihˇailescu. El 6 de agosto del 2002 varios medios alrededor del mundo dan a conocer que tres investigadores del Tecnol´ogico de Madras, en la India, M. Agrawal, N. Kayal y N. Sexena encontraron un algoritmo polinomial determinista para certificar que un n´ umero es primo, cuando en efecto lo es. Esto quita del camino a la suposici´on de mostrar primero la conjetura de Riemann y despu´es encontrar un algoritmo determinista de primalidad. El nuevo m´etodo, conocido como AKS, es simple y no requiere de grandes teor´ıas y se ha considerado como uno de los grandes descubrimientos en esta ´area.
7.2
Algoritmo AKS-2002
El algoritmo AKS, en su primera versi´on de agosto del 2002, es determinista y posee una complejidad en tiempo O((log n)12 ). Mas al igual que casi todo m´etodo, est´a sometido a un per´ıodo de continuo perfeccionamiento. El m´etodo AKS-2002 se puede ver en la tabla 8.
7.2.1
Idea del algoritmo
El siguiente teorema es una generalizaci´on del TPF y puede tomarse como un criterio determinista. Teorema 6 Sea n ≥ 2 y a < n un entero tal que mcd(m, a) = 1. Entonces n es primo ⇐⇒ (x + a)n = (xn + a)mod n. Sin embargo, para n´ umeros de considerable tama˜ no, el criterio dado por este teorema no es eficiente, ya que requiere evaluar O(n) coeficientes. As´ı, la idea b´asica de AKS fue reducir el n´ umero necesario de pasos para la verificaci´on de la primalidad. La aportaci´on de AKS es verificar s´olo (x + a)n = (xn + a) mod (xr − 1, n), para potencias r “peque˜ nas”, donde mod (xr − 1, n) significa evaluar los polinomios en el anillo cociente Zn [x]/(xr − 1). Resulta que todos los n´ umeros primos cumplen este criterio. Sin embargo tambi´en algunos n´ umeros compuestos lo cumplen para pocas parejas (a, r), por lo que hay que descartar esos casos. El algoritmo elige primero (pasos 3-10) una potencia r adecuada, es decir, tal que sea un n´ umero primo y r − 1 tenga un factor q de valor alrededor de r1/2 . Se puede probar que tales potencias r existen. Finalmente el algoritmo verifica (pasos 11-13) que se cumpla la igualdad (x + a)n = xn + a mod (xr −√1, n) en el anillo Zn [x]/(xr − 1), para a = 1, . . . , 2 r log n. En caso que as´ı suceda, esto es suficiente para declarar que n es primo. Veamos primero paso a paso algunos detalles de implementaci´on del algoritmo. Es importante mencionar que en aplicaciones criptogr´aficas, donde es necesario generar un n´ umero primo de cierta longitud, se procede primero a generar un n´ umero aleatorio impar n, y ´este se somete a alguna prueba de primalidad. Si se da como salida COMPUESTO, entonces se intenta con n + 2, y seguidamente con n + 4, n + 6, . . . hasta obtener el primo deseado. Se garantiza que esto ha de tener un costo m´ınimo por el TNP. Paso 1 Aqu´ı se descarta que el n´ umero n sea una potencia b-´esima de un n´ umero entero a, es decir, se decide si acaso “n es una potencia perfecta”. Para encontrar un posible exponente ¥ ¦ b ≥ 2, se procede a calcular un entero c = n1/b . Entonces resultar´a que n es una potencia perfecta si y s´olo si cb = n. As´ı pues, el paso 1 se puede verificar con la siguiente rutina: For b = 2 to blog nc do If c = n1/b is an integer, then COMPOSITE Paso 2 En esta etapa del algoritmo se busca un n´ umero primo r tal que r − 1 tenga un factor
√ q ≥ 4 r log n tal que q|or (n), donde or (n) denota al orden de n m´odulo r. Este n´ umero r se busca de manera exhaustiva, es decir, se comienza desde r = 2 y se detiene hasta que se encuentra el deseado. La existencia del n´ umero r est´a garantizada por un resultado debido a E. Fouvry en 1985. El segundo prop´osito de esta etapa es detectar si acaso n tiene factores peque˜ nos. Paso 3 Aqu´ı simplemente se inicializa r = 2. Realmente debe de inicializarse con r = 3 para verificar s´olo los n´ umeros impares. Se ha de proseguir en la b´ usqueda de r en tanto r < n.
Input: n ≥ 1 Output: A decision whether n is PRIME or COMPOSITE 1.- If n = ab then output COMPOSITE 2.- Find the smallest r such that or (n) > 4 log2 n 3.- If 1 < gcd(a, n) < n, for some a ≤ r, then output COMPOSITE 4.- If n ≤ r thenjouput PRIMEk p 5.- For a = 1 to 2 ϕ(r) log n do If ((x + a)n 6≡ (xn + a)mod (xr − 1, n)) then output COMPOSITE 6.- Output PRIME
Paso 4 Si mcd (n, r) 6= 1, entonces hay un divisor de n. Por lo tanto, el resultado del algoritmo ha de ser COMPOSITE. Paso 5 S´olo se pasa al siguiente paso si r es primo, lo que se puede verificar mediante el ensayo de divisiones. Realmente se verifica s´olo a aquellos r impares; esto es, el incremento del paso 9 debe ser +2. Paso 6 Aqu´ı se localiza el factor primo q m´as grande de r − 1. Mediante b´ usqueda exhaustiva, se encuentra el factor impar m´as grande de r − 1. Se puede realizar esta b´ usqueda mediante el siguiente seudoc´odigo: For i = 2 to r − 1 do While (r mod i) = 0 do r := r/i; output as a factor i √ Paso 7 Se verifica si acaso q ≥ 4 r log n y si q divide al orden de n m´odulo r, mediante la prueba r−1 n q 6≡ 1 mod r. Como q es primo y un factor de r − 1, entonces si q no fuese un factor de or (n) tendr´ıamos que (r − 1)/q = or (n)k. Por lo r−1 tanto n q ≡ 1 mod r. Es decir or (n)|r − 1, pero or (n)|(r − 1)/q, por lo cual q|or (n). Paso 8 Es importante notar que es necesario que n posea un tama˜ no al menos de 15 bits para poder encontrar el n´ umero r buscado. Paso 9 Si r no es primo, se contin´ ua buscando. La actualizaci´on deber´ıa de ser r := r + 2 que es el siguiente n´ umero impar. usqueda de r. Esto queda Paso 10 Se termina la b´ garantizado por el resultado de Fouvry. En la u ´ltima etapa del algoritmo, se revisa si acaso (x − a)n ≡ (xn − a) mod (n, xr − 1) para a =
Tabla 9: Algoritmo AKS-revisado √ 1, . . . , 2 r log n. Si no se cumpliera para alg´ un a, entonces n ha de ser compuesto. De lo contrario n, ser´a un n´ umero primo. Paso 11 Se recorren los n´ umeros a que verifican si acaso n satisface todas las congruencias. En tal caso, n es primo. Paso 12 Si se encuentra a tal que (x − a)n 6≡ (xn − a) mod (xr − 1, n) entonces n es compuesto. Paso 13 Si, finalmente, n cumple todas las equivalencias del paso 12, con el r encontrado, entonces n es primo. 7.2.2
Una versi´ on nueva del algoritmo AKS
Con observaciones de H. Lenstra, se publica por los mismos autores una nueva versi´on del algoritmo AKS, mostrada en la tabla 9. Esta nueva versi´on del algoritmo tiene tambi´en tres etapas, la primera revisa si n es una potencia perfecta. Los m´etodos aqu´ı conocidos pueden perfeccionarse hasta lograr un tiempo lineal [8, 9]. La segunda etapa consiste de nuevo en buscar un r adecuado y tambi´en eliminar la posibilidad de que n tenga factores peque˜ nos. Finalmente laj u ´ltima etapak conp siste en probar para a = 1 hasta 2 ϕ(r) log n que se cumpla (x + a)n ≡ (xn + a)mod (xr − 1, n). En tal caso, se declara que n es primo. Una vez m´as el esfuerzo mayor se hace en evaluar (x + a)n mod (xr − 1) y particularmente, como se observa en el paso 5 del u ´ltimo algoritmo, si n fuese primo es necesario evaluar todos los a’s posibles.
7.2.3
Demostraci´ on de AKS
De manera m´as formal, el resultado de AKS fue escrito por D. Bernstein, y se resume en el siguiente teorema. Teorema 7 (Agrawal, Kayal, Saxena) Sea n un entero positivo, sean q, r dos n´ umeros primos y sea S un conjunto finito de enteros. Suponiendo que: 1. q divide a r − 1, 2. n(r−1)/q mod r 6∈ {0, 1}, 3. mcd (n, b − b0 ) = 1 para todos elementos diferentes b, b0 ∈ S, √ ¡ ¢ 4. #S+q−1 ≥ n 2b r c , #S 5. (x + b)n = xn + b en el anillo Zn [x]/(xr − 1), para todo b ∈ S, entonces n es una potencia de un primo. Porteriormente Lenstra propone refinar el resultado reformul´andolo de la siguiente manera: Teorema 8 (Agrawal, Kayal, Saxena, Lenstra) Sean n, r dos enteros positivos y sea S un conjunto finito de enteros. Suponiendo que: 1. n es una ra´ız primitiva m´ odulo r, 2. mcd (n, b − b0 ) = 1 para todos elementos diferentes b, b0 ∈ S, √ ¡ ¢ 2b r c 3. #S+q−1 ≥ n , #S 4. (x + b)n = xn + b en el anillo Zn [x]/(xr − 1), para todo b ∈ S, entonces n es una potencia de un primo. Para mostrar que el algoritmo es correcto hay que verificar dos cosas: primero, si n es primo entonces el algoritmo debe dar como salida PRIME, pero esto es claro, ya que n no es una potencia perfecta ni posee factores peque˜ nos ni satisface el teorema de AKS. La parte dif´ıcil es demostrar que si el algoritmo produce como salida PRIME, entonces en efecto n es primo. Para esto u ´ltimo, se construye de manera conveniente un grupo c´ıclico G a partir de los elementos r, q dados por el algoritmo. G es un subgrupo del grupo multiplicativo (Fp [x]/h(x))∗ , siendo h(x) un polinomio irreducible. Entonces se ha de mostrar que necesariamente n es una potencia del primo p o bien n tiene factores peque˜ nos. Mas como esta segunda posibilidad ha sido descartada previamente, se ha de tener que n es primo. Para ver un bosquejo
de la demostraci´on del teorema AKS se puede consultar [19]. Para la demostraci´on completa, detallada y presentada de varias maneras diferentes se puede consultar [1, 2, 3, 6, 17, 21, 27].
7.3
Estado actual y futuro de AKS
Finalmente revisemos el estado actual de AKS y algunas predicciones hechas. El problema de primalidad hab´ıa sido tratado con teor´ıas complicadas, tales como curvas el´ıpticas, campos ciclot´omicos, etc. Ha sido una gran sorpresa para muchos, que con m´etodos de ´algebra b´asica se tenga una soluci´on satisfactoria a este famoso problema. El algoritmo AKS, sin embargo, en su forma original [1] no es pr´actico, requiere un tiempo de ejecuci´on O(log n10.5 ), mientras que el algoritmo m´as usado en la pr´actica (el de Miller-Rabin) tiene una complejidad en tiempo O(log n3 ). Sin embargo, repetimos, como en casi todo nuevo invento hay una etapa de perfeccionamiento que casi siempre tiene buenos resultados. En el caso de AKS el primer ajuste lo hizo Lenstra, como ya se mencion´o, y fue publicado por los mismos autores, mejorando el tiempo asint´otico a O(log n6.5 ) [2]. Posteriormente se dan otros perfeccionamientos, algunos de ellos presentados por D. Berstein en [6], particularmente con el c´alculo mejorado de (x+a)n en el anillo (Zn [x]/(x−1)r ). Tambi´en se puede usar el m´etodo de Berstein para detectar potencias perfectas, lo cual se describe en [9], en un tiempo de ejecuci´on lineal. Otra propuesta m´as fue hecha por P. Berrizbeitia y consiste en substituir la comprobaci´on de la igualdad (x+a)n = (xn +a) mod (xr −1) por la de (mx+1)n = s (1 + mxn ) mod (x2 − a), para valores s, m adecuados. Esto reduce el n´ umero de evaluaciones polinomiales, lo cual, naturalmente es lo m´as deseado. La modificaci´on da como resultado primos n ≡ ±1 mod 4. Por otra parte, se han comparado los m´etodos AKS con el que utiliza curvas el´ıpticas [25], y se ha propuesto combinar los dos m´etodos para hacer m´as eficiente la b´ usqueda [15]. Otras propuestas para mejorar el algoritmo se pueden consultar en [23, 29], as´ı como an´alisis de su implementaci´on en [11, 16]. Si se quiere ver la descripci´on de AKS como una lectura general, se puede ver [14], y para una consulta m´as completa y detallada [17, 27]. Finalmente los autores del algoritmo AKS prev´en que si se resuelven algunas peque˜ nas conjeturas, (si n 6= 1 mod r para alg´ un r > log log n y (x − 1)n = (xn − 1) mod (xr − 1, n), entonces n necesariamente es primo), AKS puede alcanzar un perfeccionamiento
O(log n3 ), lo que ser´ıa una muy buena noticia. Los tiempos pr´acticamente aceptables son O(log n4 ), mas por el momento uno se conforma con un algoritmo de tiempo promedio O(log n6 ).
7.4
Problemas a´ un n´ umeros primos
abiertos
sobre
Como tema final mencionamos algunos de los problemas abiertos que quedan a´ un en el tema de n´ umeros primos, as´ı como tambi´en algunos hechos importantes acerca de los n´ umeros primos.
Bibliograf´ıa N. Kayal, N. Saxena, [1] M. Agrawal, “Primes is in P,” IITK Kanpur, August 6 2002. http://www.cse.iitk.ac.in/news/ primality.pdf [2] M. Agrawal, N. Kayal, N. Saxena, “Primes is in P”, revised version. IITK Kanpur. http://www.cse.iitk.ac.in/news/ primality v3.pdf
Conjetura de primos gemelos ¿Hay una cantidad infinita de n´ umeros p tales que p y p + 2 sean primos?
C.S. Tou, “AKS Algo[3] T. Alexander, rithm”, Draft. University of Ottawa. http://padic.mathstat.uottawa.ca/ ~reports/AKS.pdf
Conjetura de Goldbach ¿Cada entero par, mayor a 2, puede escribirse como una suma de dos primos?
[4] N. C. Ankeny, “The Least Quadratic Non Residue” Annals of Mathematics, Vol. 55, No. 1, January 1952
¿Hay una cantidad infinita de primos de la forma n2 + 1?
[5] E. Bach, J. Shallit, “Algorithmic Number Theory, Efficient Algorithms”, Vol 1 The MIT Press. Cambridge Massachusetts. 1996
¿Existe siempre un primo entre n2 y (n + 1)2 ? Primos de Fermat ¿Hay una cantidad infinita de n n´ umeros de Fermat, Fn = 22 + 1 que sean primos? M´as concretamente, ¿hay un entero n > 4, tal que Fn sea de Fermat? ¿Hay una cantidad infinita de n´ umeros primos de la forma n! ± 1? ¿Hay una cantidad infinita de n´ umeros primos de la forma n # ± 1? (donde por n # se denota al producto de todos los n´ umeros primos menores o iguales a n.) El n´ umero primo m´as grande conocido hasta hoy (anunciado en febrero del a˜ no 2005), es el 42◦ 25964951 primo de Mersenne, 2 − 1 de 7816230 d´ıgitos decimales. La pareja de primos gemelos m´as grandes conocidos hasta hoy (reportada en noviembre de 1995) consta de 242206083 · 238880 ± 1, cada uno con 11713 d´ıgitos decimales. El primo m´as grande conocido hasta hoy de la forma n! ± 1, es 3610! − 1, con 11277 d´ıgitos, y fue anunciado en 1993. El primo m´as grande conocido hasta hoy de la forma n # ± 1, es 24029 # + 1, con 10387 d´ıgitos, y fue reportado en 1993.
[6] D. J. Bernstein, “Proving After Agrawal-Kayal-Saxena”, University of Illinois at http://cr.yp.to/papers/aks.pdf
Primality Draft. Chicago.
[7] D. J. Bernstein, “Distinguishing prime numbers from composite numbers: the state of the art in 2004”, Draft. University of Illinois at Chicago. http://cr.yp.to/primetests/ prime2004-20041223.pdf [8] D. J. Bernstein, “Detecting Perfect Powers In Essentially Linear Time,” Mathemtics of Computation, to appear. http://cr.yp.to/papers/powers.pdf [9] D. J. Bernstein, H.W. Lenstra, J. Pila, “Detecting Perfect Powers by Factoring into Coprimes,” University of Illinois at Chicago. http://cr.yp.to/lineartime/ powers2-20050509.pdf [10] P. Berrizbeitia, “Sharpening Primes is in P for a large family of numbers,” Universidad Sim´on Bol´ıvar, Caracas Venezuela. http://arxiv.org/PS cache/math/pdf/0211/ 0211334.pdf [11] V. Bhatt, G.K.Patra, “Analysis on Implementation and its further improvements
of AKS class algorithms,”, Research Report CM 0307, Bangalore 560 037, India. http://www.cmmacs.ernet.in/cmmacs/ Publications/resch rep/rrcm0307.pdf
[22] A.K. Lenstra, H.W. Lenstra, “Algorithms in Number Theory,” Handbook of Theoretical Computer Science, Chapter 12., Elsevier Science Publisher B.V. 1990.
[12] R. Bhattacharjee, P. Pandey, “Primality Testing”, A report sunbmitted for the Degree of Bachelor of Technology, Department of Computer Science and Engineering, Indian Institute of Technology Kanpur, April 2001.
[23] M. Maˇcaj, “Some remarks and questions about the AKS algorithm and related conjecture”, Comenius University, Slovakia. http://thales.doa.fmph.uniba.sk/macaj /aksremarks.pdf
[13] E. Bombieri, “Problems of the Millennium: The Riemann Hypothesis,” http://www.claymath.org/millennium/ Riemann Hypothesis/ Official Problem Description.pdf
[24] F. Morain, “Primalit´e Th´eorique et Primalit´e Practique ou AKS vs. ECPP”, Laboratoire D’Informatique ´ de L’Ecole Polytechnique, France. http://www.lix.polytechnique.fr/Labo/ Francois.Morain/aks-f.ps
[14] F. Bornemann, “Primes Is in P: A Breakthrough for ”Everyman”,” Notices of the AMS, May 2003, translation of the German version 2002. http://www.ams.org/notices/200305/ fea-bornemann.pdf [15] Q. Cheng, “Primality proving via one round in ECPP and one iteration in AKS’, The University of Oklahoma, Norman OK 73019. http://cr.yp.to/bib/2003/cheng.pdf [16] R. Crandall, J. Papadopoulos, “On the implementation of AKS-class primality test”, University of Maryland, Apple Computer, 18 Mar 2003. http://images.apple.com/acg/pdf/aks3.pdf [17] A. Granville, “It is easy to determine whether a given integer is prime,” Bulletin of the American Mathematical Society, Volumen 42, Number 1, Pages 3-38. http://www.mathematik.uni-wuerzburg.de/ ~mueller/Teach/granville.pdf [18] C. Hooley, “On Artin’s conjecture,” J. Reine and Angew. Math. 225, pp. 209-220. [19] M.J. Jacobson Jr., “An Exposition of the AKS Polynomial-Time Primality Test”, University of Calgary, November 29, 2002. [20] N. Kayal, N. Saxena, “Towards a deterministic polynomial time Primality Test”, Department of Computer Science IITK,Kampur 208016, India. http://www.cse.iitk.ac.in/research/ btp2002/primality.html [21] A. Klappenecker, “An Introduction to the AKS Primality Test”, Texas A&M University. http://faculty.cs.tamu.edu/klappi/629/ aks.pdf
[25] C. Rotella, “An efficient implementation of the AKS polynimial time proving algorithm,” April 29, 2005. http://www-2.cs.cmu.edu/afs/cs.cmu.edu/ user/mjs/ftp/thesis-05/rotella-thesis.pdf [26] I. E. Shparlinski, “Finite fields: theory and computation”, Kluwer Acad. Publ. Dordrecht 1999. [27] M. Smid, “Primality testing in polynomial time”, Carleton University Ottawa, Ontario. http://www.scs.carleton.ca/~michiel/ primes.ps.gz [28] V. Shop, “Smoothness and Factoring Polynomials over Finite Fields”, CSD University of Toronto, 1996. [29] J.F. Voloch, “Improvements to AKS”, University of Texas, Austin USA. http://www.ma.utexas.edu/users/voloch/ Preprints/aks.pdf [30] J Wojciechowski, “The Extended Riemann Hypothesis and its Application to Computation”, January 2003. http://wonka.hampshire.edu/~jason/math/ comp2/final paper.pdf