View
1
Download
0
Category
Preview:
Citation preview
Indice general
1. Resumen 2
2. Introduccion 3
3. Marco Teorico 6
3.1. Numeros Primos . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2. Nociones sobre la hipotesis de Riemann . . . . . . . . . . . . . . 20
3.3. Nociones sobre la hipotesis extendida de Riemann . . . . . . . . 28
3.4. Curvas Elıpticas . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4. Materıales y Metodos 37
5. Resultados 38
5.1. Algoritmo de primalidad de Agrawal, Kayal y Saxena . . . . . . 40
5.2. El algoritmo de primalidad con curvas elıpticas . . . . . . . . . 46
6. Discusion 50
7. Referencias Bibliograficas 51
8. Apendice/Anexos 53
Capıtulo 1
Resumen
En el presente trabajo hacemos el estudio de dos algoritmos eficientes de
primalidad, uno de ellos basado en teorıa elemental de numeros: el algoritmo
AKS, manejable y accesible por la gran mayorıa y con las mejoras, ajustes y
contribuciones de Lenstra, Berstein y Berizbetia el algotritmo tiene un tiem-
po promedio de O(logn6), que lo hace eficiente; y el otro basado en la teorıa
de curvas elıpticas, que aunque no es una teorıa sencilla, con ella se obtiene
resultados precisos de primalidad. Iniciamos presentando algunos conceptos y
propiedades de los numeros primos y hacemos de una breve explicacion de la
hipotesis de Riemann, uno de los siete problemas del milenio, que tiene co-
mo premio un millon de dolares ofrecido por el Clay Mathematical Institute.
Establecemos la relacion de la hipotesis de Riemman con las pruebas de pri-
malidad, detallamos el algoritmo de Agrawal, Kayal y Saxena (AKS). Hacemos
tambien un breve estudio de la teorıa curvas elıpticas, para aplicarla a algo-
ritmos de primalidad. El algoritmo usando curvas elıpticas, aunque se basa en
una teorıa con cierto grado de dificultad, pues usa una teorıa basada en algo-
ritmos para determinar el numeros de puntos de curvas elıpticas, en generar
curvas de deterninado orden especıfico que sea apropiado al problema a tratar,
que no es tarea facil y es de investigacion actual, lo que lo hace poco accesible
por las mayorıas, es mas preciso que el algoritmo AKS. Tanto el metodo AKS
como el metodo de curvas elıpticas, tiene sus ventajas y sus desventajas; para
optimizar los resultados es conveniente combinarlos para obtener resultados
mas eficientes.
2
Capıtulo 2
Introduccion
Desde los tiempos de Pitagoras los numeros primos han sido objeto de
estudio; de seguro, algunas de sus mas elementales propiedades ya eran cono-
cidas desde mucho tiempo antes. Probablemente las primeros en descubrirlos
fueron las hombres del neolıtico, que luego de recolectar alimentos para el
grupo, debieron enfrentarse al problema de repartirlo; si la casualidad, o la
mala suerte aparecıa y la colecta constaba de un numero primo de elementos,
se habran dado cuenta de la imposibilitad de repartirlo de forma equitativa.
El interes que han suscitado los numeros primos, ha sido muy variado; desde
el interes puramente espiritual de los griegos (que los consideraban bello)
al que suscitaba durante el siglo XVIII-XIX como un problema matematico
“difıcil”.
A lo largo de la historia, han creado muchas formas y metodos para tratar de
certificar que un numero es primo o no; a esto comunmente se le denomina test
de primalidad o simplemente PRIMES y es un ejemplo muy instructivo de
como un mismo problema a ido cambiando su complejidad algorıtmica a lo
largo de los anos.
Actualmente, el interes por los primos, se debe al avance de la criptografıa;
pues el principal uso que se le esta dando a los numeros primos actualmente
es el de generar claves criptograficas, los metodos criptograficos actuales, usan
numeros primos de muchas cifras , exageradamente grandes (llamados primos
industriales, tıpicamente de 256 dıgitos o bits ) como parte fundamental del
proceso de encriptacion. Por lo que es fundamental tener algoritmos rapidos
3
y eficientes que certifiquen la primalidad, esto muestra la importancia de este
trabajo de investigacion.
Las pruebas de primalidad, constituye uno de los temas mas florecientes
de la teorıa de numeros en la actualidad, debido al desarrollo de la crip-
tografıa. La criptografıa se puede definir como el arte o ciencia de cifrar
y descifrar informacion, utilizando por ejemplo tecnicas matematicas que
hagan posible el intercambio de mensajes de manera que solo puedan ser
leıdos por las personas a quienes van dirigidos. La finalidad de la crip-
tografıa es garantizar el secreto en la comunicacion entre dos entidadaes
(personas, organizaciones, etc) y asegurar que la informacion que se envıa
sea autentica, esto es, que el remitente sea realmente quien dice ser y que
el contenido del mensaje enviado no haya sido modificado en su transito;
por lo que investigaciones sobre primalidad estan extremadamente justificadas.
Si preguntamos a la gente comun, ¿como hace para saber si un numero es
primo o no? Lo mas probable es que conteste que miremos la tabla de numeros
primos o dirıa que probemos a dividir por todos los numeros menores que el,
si es realmente listo, dirıa que solo hace falta hasta su raız cuadrada, estas
ideas simples fueron realmente los primeros test de primalidad. El primero es
conocido como la criba de Eratostenes, debido a Eratostenes (siglo II a.C.).
Hay una larga lista de algoritmos que se han desarrollado e implementado
posteriormente, de algunos hablaremos en este trabajo, pero hableremos
extensamente del algoritmo AKS. Otros algoritmos importantes como el
ECPP es el presentado por Goldwasser y Kilian, basado en curvas elıpticas.
El orden de este algoritmo es O(log6(n)), pero no en el caso peor, sino en el
caso medio (esto es, para casi todas las entradas es polinomial, pero existen
algunos inputs para los que es exponencial). Actualmente las certificaciones
de primalidad se realizan con implementaciones y mejoras de este algoritmo
y es la manera mas eficaz de verificar si un numero de 100 o 200 cifras es
primo, es usar el Test de la curva elıptica, descubierto en la decada de 1990;
el estudio de las curvas elıpticas que combina tecnicas del algebra, analisis,
teorıa de numeros y geometrıa algebraica, es una de las areas mas ricas de la
4
matematica.
Es precisamente esta mezcla de diferentes ramas de la matematica, hace que
un estudio profundo de esta teorıa resulte una tarea para nada facil, ya que
este debe aprender varios temas que ya por sı solos son complicados, esto
solo para tener los requisitos necesarios para poder empezar un estudio de los
tratados mas avanzados; uno de los exitos mas recientes y que provoco gran
asombro entre los matematicos fue la demostracion del Ultimo teorema de
Fermat, realizada por A. Wiles; siendo, que en realidad lo que Walis probo,
una conjetura sobre curvas elıpticas formulada alrededor de 1950, y que segun
ya se sabıa, tenıa como consecuencia el resultado dado por Fermat. Tal es la
influencia de las curvas elıpticas que tambien tienen aplicaciones practicas no
solo en primalidad, sino tambien en algoritmos de factorizacion de numeros
enteros y en varios algoritmos criptograficos.
5
Capıtulo 3
Marco Teorico
3.1. Numeros Primos
Decimos que un numero entero no nulo p = ±1 es primo, si los unicos
factores de p son ±1 y ±p. Un numero entero no nulo n = ±1 , que no es
primo, es llamado compuesto.
Notar que 0 y ±1 no son compuestos ni primos.
Teorema 3.1.1. (TFA) Todo entero positivo n (n ≥ 2) , se puede escribir de
manera unica en la forma n = pe11 · · · pekk , donde 1 < p1 < · · · < pk son numeros
primos y e1, · · · , ek son enteros positivos.
Este teorema nos dice que la factorizacin de un entero no nulo en primos
existe y segundo, que esta factorizacion es unica. Por este teorema 1 y −1 no
pueden ser considerados como numeros primos, pues si lo fueran, podrıamos
tener que 36 = 1 · 22 · 32 = 13 · 22 · 32 = 17 · 22 · 32 etc.; es decir cada numero
compuesto admitirıa infinidad de factorizaciones distintas.
Distribucion de los numeros primos
Los numeros primos han interesado a los matematicos desde hace por lo
menos 2000 aos, por ejemplo Euclides se ocupa de ellos, en los Elementos,
demostrando la existencia de infinitos numeros primos. Este interes es
justificado ya que por el TFA sabemos que todo numero natural n ≥ 2 se
expresa, de manera unica, como producto de primos (los que van “primero”),
6
mas aun, este tema es lo suficientemente complejo para que este interes, se
haya podido mantener hasta la actualidad.
El conjunto de los numeros primos obedece a un orden asimetrico, por lo
que siempre ha resultado un problema entender sus leyes de distribucion.
En 1859, Riemann abrio una nueva puerta para la investigacion de los numeros
primos y las investigaciones sobre numeros primos se dividieron en dos lıneas
una que se encarga de ver la cantidad de numeros primos hasta un numero
dado (Teorema de los Numeros Primos) y la otra que busca probar primalidad.
La funcion zeta forma parte de la primera lınea, logrando una fusion entre la
aritmetica y el analisis.
Riemann trato de encontrar una formula o un metodo simple para calular la
cantidad de primos hasta un numero x, y aunque no cumplio su cometido
sento las bases para que posteriormente se pudiesen lograr algunas aproxima-
ciones al Teorema de los Numeros Primos.
Definicion 3.1.2 (Funcion de Euler). Se define la funcion
π : R → N, π(x) =∑p≤x
1
donde el ındice p varıa solo en el conjunto de numeros primos.
Teorema 3.1.3 (Teorema de los Numeros Primos (TNP)). La funcion
π(x) =∑p≤x
1, cumple que :
lımx→∞
π(x) =logx
x.
donde log denota el logaritmo natural.
Este resultado fue conjeturado por varios matematicos, entre ellos, por
Legendre y Gauss, pero la demostracion completa solo fue presentada en 1896,
independientemente por de la Vallee Poussin y Hadamard. No daremos la de-
mostraremos este teorema, pero demostraremos del siguiente resultado debido
a Tchebycheff que es una version debil del TNP.
7
Proposicion 3.1.4. Existen constantes positivas c > C tales que
cx
log x< π(x) < C
C
log x
para todo x ≥ 2.
Prueba. Tenemos que(2n
n
)<
∑0≤k≤2n
(2n
k
)= 22n,
y como(2nn
)= (2n)!
n!n!es multiplo de todos los primos p que satisfacen n < p ≤ 2n,
se sigue que el producto de los primos entre n y 2n es menor que 22n. Como
hay π(2n)− π(n) primos como esos, se sigue que nπ(2n)−π(n) < 22n (pues todos
eso primos son mayores que n), donde (π(2n)− π(n)) log n < 2n log 2 y
π(2n)− π(n) <2n log 2
log n.
Eso implica facilmente, por induccion, que
π(2k+1) ≤ 5 · 2k
k
(a partir de k = 5; hasta k = 5 se sigue de π(n) ≤ n/2). De ahı se sigue que si
2k < x ≤ 2k+1 entonces
π(x) ≤ 5 · 2k
k≤ 5x log 2
log x
pues f(x) = x log / log x es una funcion creciente para x ≥ 3.
Vamos ahora a probar otra desigualdad. El exponente del primo p en la
factorizacion de n! es
ωp(n) =
⌊n
p
⌋+
⌊n
p2
⌋+ · · ·
=∞∑k=1
⌊n
pk
⌋
(esta es una suma finita pues si k > logp n = log n/ log p entonces⌊
npk
⌋= 0).
De hecho,⌊n+1pj
⌋−⌊
npk
⌋es siempre 0 o 1, y es igual a 1 si, y solo si, pj divide
8
n+ 1. Ası, ωp(n+ 1)− ωp(n) es igual al exponente de p en la factorizacion de
n+ 1, lo que provee una prueba por induccion del hecho arriba.
Ası, el exponente de p en(2nn
)= (2n)!/n!2 es
∞∑k=1
(⌊2n
pk
⌋− 2
⌊n
pk
⌋).
Tenemos ahora que⌊2npk
⌋− 2⌊ npk
⌋es siempre 0 o 1 (pues 0 ≤ x−⌊x⌋ < 1 para
todo x), donde el exponente de p en(2pp
)es como maximo logp n = log n/ log p
para todo primo p. Por otra parte, si n < p ≤ 2n, el exponente de p en(2pp
)es
1. Ası, si(2nn
)=∏
p<2n pαp es la factorizacion de
(2nn
)entonces
log
(2n
n
)=∑p<2n
αp log p
=∑p≤n
αp log p+∑
n<p≤2n
log p
≤ π(n) log n+ (π(2n)− π(n)) log(2n)
≤ π(2n) log(2n)
donde
π(2n) ≥ log
(2n
n
)∗ log(2n) ≥ n log 2/ log(2n)
pues (2n
n
)=
2n
n· 2n− 1
n− 1· · · n+ 1
1≥ 2n,
donde
π(x) ≥ x log 2
log x
para todo x par, lo que implica la misma estimacion para todo x entero, pues
π(2k − 1) = π(2k).
Corolario 3.1.5. Sea f : N → [0,+∞) una funcion decreciente. La serie∑p primo
f(p) converge si, y solo si, la serie∞∑n=2
f(n)
log nconverge.
En particular,∑
p primo
1
p= +∞.
9
Una aproximacion mas precisa para π(x) es dada por
Li(x) =
∫ x
0
dt
log t,
donde tomamos el valor principal de esta integral, o sea,
Li(x) = lımε→0
∫ 1−ε
ε
dt
log t+
∫ x
1+ε
dt
log t;
claramente
lımx→∞
Li(x)
log(x)/x= 1.
Se sabe, en tanto, que
|π(x)− Li(x)| ≤ Cxe−a(log x)3/5(log log x)−1/5
para algun valor de las constantes a y C (independientes de x). En particular,
para cualquier k > 0 existe C > 0 tal que para todo x,
|π(x)− Li(x)| ≤ Cx
(log x)k,
lo que muestra que Li(x) (y aun x/(log x − 1)) es una aproximacion de π(x)
mejor que x/ log x.
La hipotesis de Riemann, ya mencionada, equivale a decir que para todo
ε > 0 existe C con
|π(x)− Li(x)| ≤ Cx1/2+ε;
nadie aun puede demostrar que esta estimacion sea correcta, incluso para algun
valor de ε < 1/2. La hipotesis de Riemann tambien implica que existe C con
|π(x)− Li(x)| ≤ Cx1/2 log x,
lo que darıa una estimacion de la magnitud de este error de forma mucho mejor
de las que se saben demostrar. Por otra parte, se sabe demostrar que no puede
existir ninguna estimacion mucho mejor que esta para |π(x) − Li(x)|: existenuna constante C > 0 y enteros x1 y x2 arbitrariamente grandes con
π(x1)− Li(x1) < −C√x1 log log log x1
log x1
π(x2)− Li(x2) > C
√x2 log log log x2
log x2.
10
Algunos resultados sobre primos
Teorema 3.1.6 (Dirichlet). Dados naturales a, d con mcd(a, d) = 1, existen
infinitos primos de la forma a+ dn (con n natural).
La demostracion usual de este teorema usa variables complejas. Muchos ca-
sos particulares admiten demostraciones elementales, por ejemplo no es difıcil
probar que existen infinitos primos de la forma 4n+ 3 o 6n+ 5.
Existen varios refinamientos conocidos del teorema de Dirichlet.
Definimos πd,a(x) como el numero de primos de la forma a+ dn en el intervalo
[2, x]. De la Vallee Poussin probo que
lımx→+∞
πa,d(x)
π(x)=
1
φ(d),
esto es, todas las posibles clases modulo d tienen aproximadamente la misma
proporcion de primos.
Por otro lado, Tchebycheff observo que para valores pequenos de x,
π3,2(x) − π3,1(x) y π4,3(x) − π4,1(x) son positivos, despues Littlewood, de-
muestro que estas funciones cambian de signo infinitas veces.
En 1957, Leech demostro que el menor valor de x para el cual
π4,3(x)− π4,1(x) = −1 es 26861.
Luego, Bays y Hudson demostraron que el menor valor de x para el cual
π3,2(x)− π3,1(x) = −1, es 608981813029.
Sean p(d, a) el menor primo de la forma a+ dn, con n entero, y
p(d) = maxp(d, a) | 0 < a < d, mcd(a, d) = 1.
En 1944, Linnin demostro que existe L > 1, con p(d) < dL para todo d
suficientemente grande; pero la mejor estimacion conocida para L es L ≤ 5.5
debida a Heath y Brown en 1992, que tambien conjeturaron que
p(d) ≤ Cd(log d)2.
Por otra parte, no se sabe demostrar que existen infinitos primos de la forma
n2 + 1, de hecho, no existe ningun polinomio P en una variable y de grado
11
mayor que 1 para el cual se sepa demostrar que existen infinitos primos de
la forma P (n), n ∈ Z. Por otra parte, existen muchos polinomios en mas
de una variable que asumen infinitos valores primos, por ejemplo, se prueba
facilmente que todo primo de la forma 4n + 1 puede ser escrito tambien en
la forma a2 + b2, a, b ∈ Z. Por otra parte, Friedlander e Iwaniec provaron
recientemente un resultado mucho mas difıcil: que existen infinitos primos de
la forma a2 + b4.
Uno de los problemas abiertos mas famosos de la matematica es la
conjetura de Goldbach: todo numero par mayor o igual a 4 es la suma de dos
numeros primos. Chen demostro que todo numero par suficientemente grande
es la suma de un primo con un numero entero con a lo mas dos factores
primos. Vinogradov demostro que todo impar suficientemente grande (por
ejemplo, mayor que 3315) es una suma de tres primos.
Si p y p + 2 son ambos primos, decimos que ellos son primos gemelos ;
y se conjetura, que existen infinitos primos gemelos. Brun, demostro que los
primos gemelos son escasos en el siguiente sentido:
si π2(x) es el numero de pares de primos gemelos hasta x, entonces
π2(x) <100x
(log x)2
para x suficientemente grande. En particular,∑p primo gemelo
1
p< +∞.
Mas aun se prueba que π2(x) sea asintotico a Cx/(log x)2 para una constante
positiva C y se tiene la siguiente caracterizacion de primos gemelos debida a
Clement.
Sea n ≥ 2; los enteros n y n+ 2 son ambos primos si, y solo si,
4((n+ 1)! + 1) + n ≡ 0 (mod n(n+ 2)).
Sea pn el n-esimo numero primo. El teorema de los numeros primos equivale
a decir que
lımn→∞
pnn log n
= 1.
12
Por otra parte, se sabe muy poco sobre el comportamiento de la funcion dn =
pn+1 − pn. Por ejemplo, la conjetura de que existen infinitos primos gemelos
equivale a decir que lım inf dn = 2. No se ah podido probar que
L = lım infdn
log pn= 0;
Erdos provo que L < 1 y Maier que L ≤ 0.248. Erdos tambien probo que el
conjunto de los puntos de acumulacion de dn/ log pn tiene medida positiva. Por
otra pate, es un teorema clasico, conocido como postulado de Bertrand, que
siempre existe por los menos un primo entre m y 2m, es decir, dn < pn. En
1931, Westzynthius probo que
lım supdn
log pn= ∞,
y en 1963 Rankin, completando un trabajo de Erdos, mostro que
lım supdn(log log log pn)
2
log pn log log pn log log log log pn≥ eγ ≈ 1.78107
donde γ es la constante de Euler-Mascheroni,
γ = lımn→∞
(1 +
1
2+ · · ·+ 1
n− log n
)≈ 0.5772156649;
este resultado fue mejorado posteriormente por Pomerance y Pintz, que pro-
baron que el lado izquierdo de la desigualdad anterior es mayor o igual a 2eγ.
Se conjetura que
lım supdn
(log pn)2= C
para alguna constante positiva C. Otra conjetura famosa es que siempre hay
por lo menos un primo entre n2 y (n+1)2. Observemos que la primera vez que
dn > 1000 ocurre para pn = 1693182318746371, cuando dn = 1132, lo que fue
descubierto recientemente por T. Nicely y D. Nyman.
Sierpinski probo que existen infinitos numeros naturales k tales que k ·2n+1
es compuesto para todo natural n y Riesel probo el mismo resultado para
k·2n−1. Se conjetura que los menores valores de k con las propiedaes anteriores
son respectivamente 78557 y 509203.
13
Algunos primos especiales. Primos de Mersenne
No hay ninguna formula simple para generar primos arbitrariamente
grandes. Existen formulas que generan numeros primos, pero son complicadas
y no ayudan mucho ni a generar numeros primos explıcitamente ni a responder
preguntas teoricas sobre la distribucion de los primos. Un ejemplo de formula
para pn, el n-esimo primo, es
pn =
⌊1− 1
log 2log
(−1
2+∑
d|Pn−1
µ(d)
2d − 1
)⌋,
donde Pn−1 = p1p2 · · · pn−1.
Otra formula es
pn =⌊102
n
c⌋− 102
n−1⌊102
n−1
c⌋,
donde
c =∞∑n=1
pn102n
= 0.0203000500000007 . . . .
La dificultad de esta ultima formula viene del hecho que para calcular c debe-
mos encontrar todos los primos; la formula serıa mas interesante si hubiera
otra interpretacion para el numero real c, lo que parece muy improbable.
Pruebas de primalidad basados en factorizaciones de n− 1
Proposicion 3.1.7. Sea n > 1. Si para cada factor primo q de n − 1 existe
un entero aq tal que an−1q ≡ 1 (mod n) y a
(n−1)/qq equiv1 (mod n), entonces n
es primo.
Prueba. Sea qkq la mayor potencia de q que divide n− 1. El orden de aq
en (Z/(n))∗ es un multiplo de qkq , donde φ(n) es un multiplo de qkq . Como
esto vale para todo factor primo q de n− 1, φ(n) es un multiplo de n− 1 y n
es primo.
Proposicion 3.1.8 (Pocklington). Si n− 1 = qkR, donde q es primo y existe
un entero a tal que an−1 ≡ 1 (mod n) y mcd(a(n−1)/q − 1, n
)= 1, entonces
cualquier factor primo de n es congruente a 1 modulo qk.
14
Prueba. Si p es un factor primo de n, entonces an−1 ≡ 1 (mod p) y p no
divide a(n−1)/q − 1, donde ordpa, el orden de a modulo p, divide n− 1 mas no
divide (n− 1)/q. Ası, qk | ordpa | p− 1, donde p ≡ 1 (mod q)k.
Corolario 3.1.9. Si n − 1 = FR, con F > R y para todo factor primo q de
F existe a > 1 tal que an−1 ≡ 1 (mod n) y mcd(a(n−1)/q − 1, n
)= 1, entonces
n es primo.
Prueba. Sean q un factor primo de F y qk la mayor potencia de q que di-
vide F ; por la proposicion anterior, todo factor primo de n debe ser congruente
a 1 modulo qk. Como esto vale para cualquier factor primo de F , se sigue que
cualquier factor primo de n debe ser congruente a 1 modulo F . Como F >√n,
entonces n es primo.
De hecho, basta conocer un conjunto de factores primos cuyo producto sea
menor que (n − 1)1/2 para, con ayuda el resultado de Pocklington, intentar
demostrar la primalidad de n (lo que dejamos como ejercicio). Los siguientes
criterios son consecuencias directas de las proposiciones anteriores.
Fermat conjeturo que todo numero de la forma Fn = 22n+ 1 era primo, y
se verifica la formula para n ≤ 4. Observe que 2n +1 (y en general an +1, con
a ≥ 2) no es primo si n no es una potencia de 2; si p es un factor primo impar
de n, podemos escribir an +1 = bp +1 = (b+1)(bp−1 − bp−2 + · · ·+ b2 − b+1),
donde b = an/p. Euler mostrarıa mas tarde que F5 no es primo (tenemos
F5 = 4294967297 = 641 · 6700417) y ya se demostro que Fn es compuesto
para varios otros valores de n; ningun otro primo de la forma Fn = 22n+ 1
es conocido, mas se conocen muchos primos (algunos bastante grandes) de la
forma a2n+ 1, que son conocidos como primos de Fermat generalizados. La
prueba a seguir muestra como probar eficientemente la primalidad de Fn.
Corolario 3.1.10 (Prueba de Pepin). Sea Fn = 22n+ 1. Luego Fn es primo
si, y solo si, 3(Fn−1)/2 ≡ −1 (mod Fn).
Prueba. Si 3(Fn−1)/2 ≡ −1 (mod Fn), entonces la primalidad de Fn se
sigue de la Proposicion 3.1.7. Por otra parte, si Fn es primo entonces 3(Fn−1)/2 ≡(3Fn
)=(Fn
3
)=(23
)= −1 (mod Fn).
Corolario 3.1.11 (Teorema de Proth; 1878). Sea n = h · 2k + 1, con 2k > h.
Luego, n es primo si, y solo si, existe un entero a, con a(n−1)/2 ≡ −1 (mod n).
15
Prueba. Si n es primo, podemos tomar a cualquiera con(an
)= −1; es
decir, la mitad enteros entre 1 y n− 1 sirve como a. La recıproca se sigue del
Corolario 3.1.9 con F = 2k.
Corolario 3.1.12. Sea n = h·qk+1, con q primo y qk > h. Luego, n es primo si,
y solo si, existe un entero a, con an−1 ≡ 1 (mod n) y mcd(a(n−1)/q − 1, n
)= 1.
Prueba. Si n es primo, podemos tomar a cualquiera que no sea de la
forma xq modulo n; es decir, una proporcion de (q − 1)/q de entre los enteros
entre 1 y n − 1 sirve como a. La recıproca se sigue del Corolario 3.1.9 con
F = qk.
Una gran mayorıa de los 100 mayores primos conocidos estan en las condi-
ciones del teorema de Proth (ver tablas). Esto se debe al hecho de que los
primos de esa forma son frecuentes (mas frecuentes que, por ejemplo, los pri-
mos de Mersenne) y que su primalidad es facilmente demostrada usando este
resultado.
Primos de Mersenne
Un numero de Mersenne es un numero de la forma Mp = 2p − 1. Los cinco
mayores numeros primos conocidos actualmente son primos de Mersenne. El
mayor de ellos es 213466917−1, descubierto el 14/11/2001. Este es uno de los dos
primos conocidos con mas de un millon de dıgitos, el otro es 26972593−1 (tambien
primo de Mersenne); ambos fueron descubiertos por GIMPS. El criterio de
Lucas-Lehmer, nos brinda una prueba de primalidad bastante rapida para
numeros de Mersenne. Veamos en primer lugar que 2p−1 solo puede ser primo
cuando p es primo.
Proposicion 3.1.13. Si 2n − 1 es primo, entonces n es primo.
Prueba. Si n = ab, con a, b ≥ 2, entonces 1 < 2a − 1 < 2n − 1 y
2n− 1 = 2ab− 1 = (2a)b− 1 ≡ 1b− 1 = 0 (mod 2a− 1) y 2n− 1 es compuesto.
Por otra parte, no se sabe demostrar ni que existen infinitos primos de
Mersenne ni que existen infinitos primos p para los cuales Mp es compuesto.
Se conjetura, en tanto, que existen infinitos primos p para los cuales Mp es
primo y que, si pn es el n-esimo primo de este tipo, tenemos
0 < A <log pnn
< B < +∞
16
para constantes A y B. Existen algunas conjeturas mas precisas sobre el valor
de
lımn→∞
n√pn;
Eberhart conjetura que este lımite existe y es igual a 3/2; Wagstaff, por otra
parte, conjetura que el lımite sea
2e−γ ≈ 1.4757613971
donde γ es la ya mencionada constante de Euler-Mascheroni.
Los primos de Mersenne son interesantes tambien por causa de los numeros
perfectos. Dado n ∈ N∗, definimos
σ(n) =∑d|n
d,
la suma de los divisores (positivos) de n. Por el teorema fundamental de la
aritmetica demostramos facilmente que si
n = pe11 pe22 · · · pemm ,
con p1 < p2 < · · · < pm, entonces
σ(n) = (1 + p1 + · · ·+ pe11 ) · · · (1 + pm + · · ·+ pemm )
=pe1+11 − 1
p1 − 1· · · p
em+1m − 1
pm − 1.
En particular, si (a, b) = 1, entonces σ(ab) = σ(a)σ(b). Un entero positivo n
se dice perfecto si σ(n) = 2n; los primeros numeros perfectos son 6, 28 y 496.
Nuestro proximo resultado caracteriza los numeros perfectos pares.
Proposicion 3.1.14. Si Mp es un primo de Mersenne entonces 2p−1Mp es
perfecto. Ademas,todo numero perfecto par es de la forma 2p−1Mp para algun
primo p,siendo Mp un primo de Mersenne.
Prueba. Si Mp es primo, entonces
σ(2p−1Mp) = (2p − 1)(Mp + 1) = 2 · 2p−1Mp.
Por otra parte,sea n = 2kb, con k > 0 y b impar, un numero perfecto par.
Tenemos σ(n) = 2n = σ(2k)σ(b), donde 2k+1b = (2k+1−1)σ(b) ≥ (2k+1−1)(b+
17
1), valiendo la igualdad solo cuando b es primo. De esta desigualdadtenemos
b ≤ 2k+1 − 1. Por otra parte, como (2k+1 − 1) | 2k+1b y (2k+1 − 1, 2k+1) = 1,
tenemos (2k+1−1) | b y 2k+1−1 ≤ b. Ası, b = 2k+1−1 y 2k+1b = (2k+1−1)(b+1),
donde b es primo. Por la proposicion 3.9, p = k + 1 es primo, b = Mp y
n = 2p−1Mp.
Por otra parte, uno de los problemas abiertos mas antiguos de la
matematica es el de la existencia de numeros perfectos impares. Se sabe apena
que un numero perfecto impar, de existir, debe ser muy grande (mas de 300
dıgitos) y satisfacer simultaneamente varias condiciones complicadas.
Conjetura 3.1.15. No existe ningun numero perfecto impar.
Nuestro proximo resultado es el criterio de Lucas-Lehmer,la base de los
algoritmos que prueban para grandes valores de p si 2p − 1 es o no primo:
Teorema 3.1.16. Sea S la sucesion definida por S0 = 4, Sk+1 = S2k − 2 para
todo natural k. Sea n > 2, luego Mn = 2n − 1 es primo si,y solo si, Sn−2 es
multiplo de Mn.
Prueba. Observemos inicialmente que
Sn =(2 +
√3)2n
+(2−
√3)2n
para todo natural n. La demostracion por induccion es simple: claramente
S0 = 4 =(2 +
√3)20
+(2−
√3)20
y
Sk+1 = S2k − 2 =
((2 +
√3)2k
+(2−
√3)2k)2 − 2
=((
2 +√3)2k)2
+ 2 ·(2 +
√3)2k · (2−√
3)2k
+((
2−√3)2k)2 − 2
=(2 +
√3)2k+1
+(2−
√3)2k+1
.
Supongamos, por el absurdo, queMn |(2+
√3)2n−2
+(2−
√3)2n−2
y queMn sea
compuesto, con un factor primo q, tal que q2 < Mn. Tenemos(2+
√3)2n−2
+(2−
√3)2n−2
≡ 0 (mod q), donde, en el grupo multiplicativo G =(Z/(q)
[√3])∗
,
tenemos(2 +
√3)2n−2
= −(2 −
√3)2n−2
. Como 2 −√3 =
(2 +
√3)−1
, esta
ecuacion puede ser reescrita como(2 +
√3)2n−1
= −1 (tambien en G), lo
que significa que el orden de 2 +√3 en G es exactamente 2n. Esto es un
18
absurdo, pues el numero de elementos de G es apenas q2− 1 < 2n. Queda, por
tanto,demostrado que si Sn−2 es multiplo de MN , entonces Mn es primo.
Supongamos ahora que Mn es primo,con n > 2. Recordemos que n es un
primo impar. Por reciprocidad cuadratica tenemos(
3Mn
)= −
(Mn
3
)= −1, pues
3 ≡Mn ≡ −1 (mod 4) yMn ≡ 1 (mod 3). Ası,3 no es un cuadrado en Z/(Mp)
y K = Z/(Mp)(√
3)es un cuerpo de orden M2
n. Ademas, 3Mn−1
2 =(
3Mn
)= −1
en K. Queremos probar que(2 +
√3)2n−2
+(2 −
√3)2n−2
≡ 0 (mod M)p,es
decir,que es igual a 0 en K. Esto equivale a demostrar que tenemos(2 +
√3)2n−2
= −(2−
√3)2n−2
en K, lo que puede ser reescrito como(2+
√3)2n−1
=
−1;debemos por tanto probar que el orden de 2+√3 es exactamente 2n. Note
que 2n =Mn+1 donde(2+
√3)2n
=(2+
√3)Mn
(2+
√3)=(2−
√3)(2+
√3)=
1 (note que, en K,(2+
√3)Mn
=(2MN +
√3)Mn
= 2+ 3Mn−1
2 ·√3 = 2−
√3);
ası es claro que el orden de 2 +√3 es un divisor de 2n.
Como K∗ tiene M2n − 1 = 2n+1(2n+1 − 1) elementos, debemos probar que
2+√3 no es una cuarta potencia enK. Note que
(2+
√3)2n
= 1 demuestra que
2 +√3 es un cuadrado,lo que de hecho puede ser visto en forma mas directa:
2 +√3 =
(1 +
√3)2/2 y 2 = 2n+1 = 2(n+1)2 es una cuarta potencia en K. Nos
resta, ası, demostrar que ±(1+
√3)no son cuadrados en K. Supongamos, por
el absurdo, que ε(1 +
√3)=(a + b
√3)2, con ε = ±1; tenemos ε
(1 −
√3)=(
a − b√3)2
y, multiplicando, −2 =(a2 − 3b2
)2, lo que significa que −2 es un
cuadrado modulo Mn (pues a y b son enteros). Esto, en tanto, es claramente
falso:( −2Mn
)=( −1Mn
)(2
Mn
)= −1 ·1 = −1, pues Mn ≡ 3 (mod 4) y ya vimos que
2 es un cuadrado modulo Mp. Esto concluye la demostracion.
Aun cuando Mp no es primo, podemos garantizar que sus factores primos
seran de ciertas formas especiales. Esto es muy util cuando buscamos primos
de Mersenne pues podemos eliminar algunos exponentes encontrando factores
primos de Mp. Esto tambien puede ser util para hacer conjeturas sobre la
“probabilidad”de que Mp sea primo, o, mas precisamente, sobre ladistribucion
de los primos de Mersenne.
Proposicion 3.1.17. Sean p > 2 y q primos con q un divisor de Mp. Luego,
q ≡ 1 (mod p) y q ≡ ±1 (mod 8).
Prueba. Si q divide Mp, entonces 2p ≡ 1 (mod q), lo que significa que el
orden de 2 modulo q es p (pues p es primo). Esto significa que p es un divisor
19
de q − 1, o sea, que q ≡ 1 (mod p). Por otra parte, 2 ≡ 2p+1 =(2(p+1)/2
)2(mod q), donde
(2q
)= 1, lo que significa que q ≡ ±1 (mod 8).
Los varios valores de p para los cuales la primalidad de Mp fue probada
sugieren que para la amplia mayorıa de los valores de p, Mp no es primo. Esto
es apenas una conjetura: no se sabe demostrar incluso que existen infinitos
primos p para los cualesMp sea compuesto. Ahora vamos aver una proposicion
que sirve para garantizar que para ciertos valores especiales de p, algunos muy
grandes, Mp no es primo.
Proposicion 3.1.18. Sea p primo, p ≡ 3 (mod 4). Luego 2p + 1 es primo si,
y solo si, 2p+ 1 divide Mp.
Prueba. Si q es primo, entonces Mp = 2p − 1 = 2(q−1)/2 − 1 ≡(2q
)− 1
(mod q). Mas p ≡ 3 (mod 4) significa que q ≡ 7 (mod 8), donde(2q
)= 1. Ası,
Mp ≡ 0 (mod q), lo que demuestra una de las implicaciones de la proposicion.
Por otra parte, si 2p+1 no es primo, tiene factores primos r, con r equiv1(mod p) ( pues r < p ). Si 2p + 1 dividiese Mp, r serıa un factor primo de
Mp, lo que contradice la proposicion anterior.
Los primos p para los cuales 2p+1 es primo son llamados primos de Sophie
Germain. Algunos primos de Sophie Germain bastante grandes son conocidos,
como p0 = 18458709 · 232611 − 1; ası, por la proposicion anterior, Mp0 es com-
puesto. Se sabe tambien que si πSG(x) denota el numero de primos de Sophie
Germain menores que x, entonces existe C tal que para todo x
πSG(x) < Cx
(log x)2.
πSG(x) sea asintotico a cx/(log x)2 para algun c > 0 pero no se ha podido
demostrar que que existen infinitos primos de Sophie Germain.
3.2. Nociones sobre la hipotesis de Riemann
Definicion 3.2.1 (Funcion de Euler). Se define la funcion π : R → N,x 7→ π(x) =
∑p≤x
1, donde el ındice p varıa solo en los numeros primos.
20
x π(x)/ xlnx
105 1.104
107 1.071
109 1.054
1011 1.043
1013 1.036
1016 1.028
1021 1.021
1024 1.019
Tabla 3.1: Aproximaciones de π(x)
La funcion π cuenta los numeros primos menores a x, por ejemplo
π(20) = 8, π(100) = 25.
En 1792 Gauss mostro evidencias numericas de esta relacion
lımx→∞
π(x)
x/ ln(x)= 1
conocida como el Teorema de los Numeros Primos (TNP).
Veamos algunos calculos en el cuadro 3.1.
De manera independiente, Legendre muestra que la funcin π puede aprox-
imarse mediante una de la forma x 7→ x/(A log x + B), y da como valores
A = 1, B = −1.08366; y en el ao 1852 Chebyshev demostro que 0.92129 xlnx
<
π(x) < 1.1056 xlnx
, mas rigurosamente, puesto con notacion moderna, de-
mostro que π(x) = Ω(x/ lnx), es decir, que el cociente (π(x) ln x)/x, esta aco-
tado tanto inferior como superiormente.
En 1892 Sylvester mejora la aproximacion: 0.95695 xlnx
< π(x) < 1.04423 xlnx
.
En 1896 J. Hadamard y De la Valle-Poussin, independientemente, dieron de-
mostraciones del TNP.
Se ha considerado a Euler como quien introdujo la famosa funcion
x 7→ ζ(s) =∞∑n=1
1
ns
21
que es convergente para cualquier real s > 1. Y, el mismo demostro la relacion
ζ(s) =∏
p primo
(1− p−s)−1.
llamada producto de Euler, la cual aparecio por primera vez en su libro “In-
troduction in Analysis Infinitorum”.
De hecho ya eran conocidos casos particulares de esta funcion en terminos de
series, por ejemplo, para s = 1 resulta la series armonica∑∞
n=11n, que ya desde
1350 N. d’Oresme habıa demostrado que era divergente.
En 1735, Euler muestra que ζ(2) =∑∞
n=11n2 = π2
6, ζ(4) = π4
90, y trabajo los
casos pares llegando a calcular hasta ζ(26).
Actualmente se sabe que para valores enteros pares tenemos la relacion,
ζ(2k) =22k−1π2k
(2k)!(−1)k+1B2k,
donde B2k es llamado un Numero de Bernoulli.
Lamentablemente, Euler no obtuvo nada acerca de los casos impares, actual-
mente se sabe que ζ(3) es un numero irracional .
Una consecuencia importante de la funcion ζ es otra demostracion de la
existencia de una infinidad de numeros primos. En efecto, esto es una conse-
cuencia de que ζ(s) → ∞, cuando s→ 1.
En 1859 Riemann edita un manuscrito titulado “Sobre el numero de primos
menores que una magnitud dada”, en el que Riemann estudia la relacion de
los numeros primos con funciones de variable compleja.
Riemann tuvo la idea de extender la funcion zeta a todo el plano complejo
(privado del punto z = 1) e intento probar el TNP mediante esa extension.
Aunque no demostro el TNP, s le permitio obtener muy buenos resultados.
Riemann formulo tambien varias conjeturas sobre la extension de la funcion ζ
(llamada desde entonces la funcion de Riemann). Sin embargo el punto mas
importante de la discusion, esta en la distribucion de los ceros de la funcion de
Riemann, que esta ıntimamente relacionada con la distribucion de los numeros
primos. Se tiene los siguientes resultados acerca de la funcion de Riemann:
1. ζ no tiene ceros en el semiplano Re(z) > 1.
2. ζ no tiene ceros en la lınea Re(z) = 1. Este hecho implica en TNP.
22
Grfica 3.1: Raıces, o ceros reales de ζ.
Por lo tanto las unicas tres posibilidades respecto a los ceros de ζ son las
siguientes:
1. Los ceros que estan fuera de la franja o < Re(z) < 1 son enteros negativos
pares reales, es decir −2,−4,−6,−8, . . ..
Estos son los unicos ceros fuera de la franja citada y son llamados ceros
triviales de ζ, o ceros reales, ya que ningun otro cero es real. Que estos
sean ceros resulta, por un lado, al expresar la funcion de Riemann en
terminos de los numeros de Bernoulli[ζ(−n) = −Bn+1
n+1
], y tambien de la
forma equivalente demostrada por Euler
ζ(z) =1
1− 21−z
∞∑n=0
1
2n+1
n∑k=0
(−1)k(n
k
)(k + 1)−z
En la grafica 3.1 se muestra el eje real negativo, donde se puede observar
los ceros triviales de ζ.
2. Los ceros que estan en la franja 0 < Re(z) < 1 son llamados ceros no-
triviales de ζ y hay una cantidad infinita de ellos. Los ceros no-triviales
no son reales por lo que son llamados tambien ceros complejos.
3. Los ceros que han podido ser calculados estan sobre la lınea crıtica
Re(z) = 1/2, y tienen la forma 1/2 + yi con y = 0. En la tabla 3.2
la ordenadas de los primeros ceros que se conocen quedan enlistadas,
y en la grafica 3.2 se les puede observar, al graficar la funcion real
y 7→ |ζ(1/2 + yi)|.
23
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
Tabla 3.2: Las ordenadas de los primeros ceros no-triviales de ζ
Grfica 3.2: Ceros de la funcion real y 7→ |ζ(1/2 + yi)|.
24
ao n
1903 15
1914 79
1925 138
1935 1, 041
1958 35, 337
1966 250, 000
1968 3, 500, 000
1977 40, 000, 000
1979 81, 000, 001
1983 300, 000, 001
1986 1, 500, 000, 001
2001 10, 000, 000, 000
2004 900, 000, 000, 000
2004 10, 000, 000, 000, 000
Tabla 3.3: Numero de ceros no-triviales de ζ conocidos en las fechas indicadas.
Riemann formula entonces su conjetura acerca de los ceros no triviales:
Conjetura 3.2.2 (Hipotesis de Riemann (HR)).
Todos los ceros no triviales de ζ que estan dentro de la franja ya mencionada
estan 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 mas importantes de las matematicas modernas. Lo
que se tiene es solo evidencia numerica 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.3
De todo esto resulta, entonces, una ıntima relacion entre los numeros primos
y la funcion ζ. De manera visual es posible captar esa relacion. En las graficas
3.3 y 3.4 mostramos patrones de numeros primos y de ceros de zeta. Tomamos
muestras de 50 primos y de 50 ceros de ζ, estos de alguna forma aleatoria.
25
Grfica 3.3: Distribucion de primos.
Grfica 3.4: Distribucion de ceros de ζ
Se observa que el comportamiento en su distribucion es “parecida” y casi no
cambia. Esto puede verse mejor al tomar una mayor cantidad de muestras.
Tal relacion se puede establecer de manera formal en la siguiente version de
la HR.
Definicion 3.2.3. La integral logarıtmica Li(x) esta definida por
Li(x) =
∫ x
2
dt
log t
Entonces se puede reescribir la hipotesis de Riemann como:
π(x) = Li(x) +O(x1/2+ϵ)
Otras dos maneras equivalentes de la hipotesis de Riemann se plantean como
sigue:
Definicion 3.2.4. Sean ψ y ϑ definidas como:
x 7→ ψ(x) =∑
log p|k ∈ N, p primo, pk ≤ x
= logmcmi|1 ≤ i ≤ ⌊x⌋
x 7→ ϑ(x) =∑p≤x
log p
26
Entonces la hipotesis de Riemann queda como:
ψ(x) = x+O(x1/2+ϵ)
ϑ(x) = x+O(x1/2+ϵ)
Aplicacion del teorema del numero primo
Una aplicacion simple del TNP la vemos en criptografıa de la siguiente
manera: En la practica son muy comunes los certificados digitales. Un cer-
tificado digital consiste esencialmente de una clave publica, de los datos del
propietario del certificado y de una una firma digital de quien emite el certi-
ficado. La clave publica en un certificado RSA es un numero entero producto
de dos numeros primos, casi del mismo tamano. Una de las preocupaciones
mas populares es saber con certeza si acaso los numeros primos que compo-
nen la clave publica no podran repetirse. Mas aun, se trata de saber si hay
suficientes numeros primos para una cantidad considerable de certificados digi-
tales, o alternativamente si acaso es posible siempre encontrar numeros primos.
La respuesta positiva a esto se implica si es posible contar los numeros primos
y saber de que manera estan 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 aproxi-
madamente π(2509)− π(2508) primos, es decir alrededor de
2509
ln(2509)− 2508
ln(2508)= (4.75034− 2.37984) · 10150
= 2.37049 · 10150.
Si hubiese alrededor de 1080 moleculas en todo el Universo, y mucho menos de
1010 individuos en el mundo, no es difıcil darse cuenta que “nunca” se termi-
narn los primos a ser usados como certificados digitales.
Por otra parte, el TNP implica que dado un numero x, entonces ten-
emos x/(lnx) numeros primos menores a x, ası el “y” donde “aparece” el
siguiente numero primo, se sigue de que ln(x) ∼ ln(y), y de la relacion
y/(ln y) = x/(lnx) + 1.
27
Esto quiere decir que si tenemos algun primo de algun p, el siguiente “apare-
cera” en una distancia aproximada de ln(p). En nuestro caso, solo tendremos
que recorrer alrededor de ln(2509) ∼ 352 enteros, a partir de algun numero
aleatorio para encontrar un numero primo. Por lo que las dudas referentes a
los numeros primos en certificados digitales estn resueltas en la practica.
3.3. Nociones sobre la hipotesis extendida de
Riemann
De manera analoga a que la hipotesis de Riemann, en la version extendida
existen varias maneras de escribirla, veamos algunas de ellas.
La funcion Lp : C → C se define como:
Lp(z) =∞∑n=1
(n
p
)1
nz
donde(
np
)es el llamado sımbolo de Legendre.
Entonces la Hipotesis 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 numeros primos
estan “igualmente” distribuidos en diferentes clases de residuos modulo un
numero n. Por ejemplo, entre los 1229 primos menores a 10000, 611 son con-
gruentes con 1 y 617 lo son con 2, modulo 3. Es bien conocido el siguiente
resultado acerca de los residuos de primos modulo un numero n.
Teorema 3.3.1 (Dirichlet). Si mcd(a, n) = 1 entonces hay una cantidad
infinita de nmeros primos congruentes con a modulo n.
Una manera mas concreta de este teorema se tiene en la siguiente defini-
cion.
Observamos primero que si los numeros primos estuviesen equi-distribuidos
en las clases de congruencia modulo n, entonces debe haber un “mismo”
numero de primos en cada una de las que contengan primos. Como hay φ(n)
de tales clases (φ denota a la funcion clasica de Euler, que cuenta para cada
entero n, cuantos enteros menores y primos relativos a n hay), por el TNP
28
“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
Para tres enteros positivos x, a, n con a < n, sea Π(x, na) el conjun-
to de primos congruentes con a modulo n que son menores a x. Sea, aho-
ra, π : (x, n, a) 7→ π(x, n, a) = card(Π(x, n, a)) Por ejemplo π(10000, 3, 1) =
611, π(10000, 3, 2) = 617.
La HER tambien 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)
ϕ(n)+O(x1/2+ϵ).
Finalmente, una ultima version de HER la escribiremos despues de la siguiente
definicion.
Un caracter sobre un grupo abeliano G es un homomorfismo de G al cırculo
unitario S1 = z ∈ C|zz = 1 (este ultimo dotado de la multiplicacion de
numeros complejos). Sea µ un caracter sobre Z∗n, entonces se define el caracter
de Dirichlet χ : Z∗ → S1 como:
χ(m) =
µ(m mod n) si mcd(m,n) = 1
0 en otro caso
Si χ asume slo valores 0 o 1, se dice ser principal.
La funcion de Dirichlet L es entonces
z 7→ L(z, χ) =∑n≥1
χ(n)
nz.
La HER afirma que todos los ceros de L tienen parte real 1/2.
Hipotesis de Riemann Generalizada y primalidad
La funcion zeta de Riemann ζ para los numeros complejos s con Re(s) > 1.
Se prueba que es holomorfa en el semiplano Re(s) > 1 y que se puede extender
en una funcion meromorfa en el plano complejo C. La hipotesis de Riemann es
que en la banda 0 < Re(s) < 1 todos los ceros de ζ estan en la recta Re(s) = 12.
Dado un homomorfismo P del grupo multiplicativo (Z/mZ)∗ en C∗, podemos
29
extender ζ a un homomorfismo del semigrupo multiplicativo χ : N → C∗ (χ se
llama un caracter modulo m). A partir de χ se define su L-serie de Dirichlet
mediante
L(z, χ) =∑n≥1
χ(n)
nz
La hipotesis de Riemann generalizada (HRG) dice que para todo modulo
m y todo caracter χ, los ceros en la banda 0 < Re(s) < 1 de la funcion L estan
sobre la recta Re(s) = 12.
3.4. Curvas Elıpticas
Una curva elıptica E sobre un cuerpoK es el conjunto de puntos (x, y) ∈ K
que son solucion de una ecuacion de la forma
y2 = x3 + Ax+B,
donde A,B son constantes. Esta ecuacion es llamada ecuacion de Weierstrass
para la curva elıptica E.
K habitualmente es el cuerpo de los numeros racionales Q, los numeros reales
R, los numeros complejos C, un cuerpo finito Fp para un primo p, o Fq donde
q = pk con k ≥ 1, etc. Si A,B son elementos del cuerpo K diremos que la
curva elıptica E esta definida sobre K.
Si queremos considerar puntos con coordenadas en algun cuerpo L
extension de K, escribimos E(L). Por razones tecnicas, es util agregar a
una curva elıptica un punto mas que denotaremos por O y llamaremos
punto del infinito, ubicado al “tope” (y al “fondo”) del eje y , es decir
E(L) := (x, y) ∈ L× L : y2 = x3 + Ax+B ∪ O.
En terminos de graficos, E(R) tiene dos formas basicas: la cubica y2 = x3 − x
que tiene tres raıces reales distintas, y la cubica y2 = x3+x que tiene solo una
raız real. Asumiremos ademas,
4A3 + 27B2 = 0.
razon por la cual no existiran raıces multiples.
30
pues, si r1, r2, r3 son las raıces de la cubica, se demuestra que el discrimi-
nante de la cubica := [(r1 − r2)(r1 − r3)(r2 − r3)]2 es = −(4A3 + 27B2).
Por lo tanto, las raıces de la cubica deben ser distintas.
La condicion 4A3 + 27B2 = 0 garantiza que la curva elıptica sea regular, es
decir, sin vertices ni autointersecciones. Si 4A3 + 27B2 > 0 la curva tiene una
unica componente conexa y si 4A3+27B2 < 0 tendra dos componentes conexas.
Consideraremos tambien ecuaciones algo mas generales, como
y2 + a1xy + a3y = x3 + a2x2 + a4x+ a6, (3.1)
donde a1, a2, a3, a4, a6 ∈ K.
Esta es llamada ecuacion de Weierstrass generalizada y es util cuando traba-
jamos sobre cuerpos de caracterıstica 2 y caracterıstica 3.
Si la caracterıstica del cuerpo no es 2, podemos dividir por 2, completar cuadra-
dos y obtener:(y +
a1x
2+a32
)2= x3 +
(a2 +
a214
)x2 +
(a4 +
a1a32
)x+
(a234
+ a6
),
que podemos escribir como
Y 2 = x3 + a′2x2 + a′4x+ a′6,
donde Y = y + a1x2
+ a32y con algunas constantes a′2, a
′4, a
′6 en K.
Si ademas la caracterıstica del cuerpo es diferente de 3, podemos hacer x =
X − a′23y obtener
Y 2 = X3 + AX +B,
para algunas constantes A,B en K.
Por otro lado, supongamos que comenzamos con una ecuacion
cy2 = dx3 + ax+ b
con c y d no nulos. Multiplicando ambos lados de la ecuacion por c3d2 obten-
emos
(c2dy)2 = (cdx)3 + (ac2d)(cdx) + (bc3d2),
y con el cambio de variables
Y = c2dy y X = cdx
obtenemos de nuevo, una ecuacion en la forma de Weierstrass.
31
Suma de puntos en una curva elıptica
Las curvas elıpticas definen de manera natural una operacion llamada
suma, con la cual se obtiene un grupo abeliano sobre el conjunto de sus
puntos; y es a partir de esta suma, que quedara definido el multiplo de un
punto, que es la suma del punto consigo mismo, un numero determinado de
veces. Veamos como se define dicha suma.
Sea E una curva elıptica con ecuacion y2 = x3+Ax+B y sean P1, P2 puntos
en E tales que P1 = (x1, y1) y P2 = (x2, y2). Definiremos un nuevo punto P3:
Sea la recta L que pasa por P1 y P2, y veremos mas adelante que L intersecta
a E en un tercer punto P ′3, reflejamos P ′
3 con respecto del eje x y obtenemos
P3; luego definimos
P1 + P2 = P3.
Consideremos primero que P1 = P2 y que ambos son distintos de O. La
recta L a traves de P1 y P2 tiene pendiente igual a
m =y2 − y1x2 − x1
.
Si x1 = x2. La ecuacion de L es y = m(x − x1) + y1. Para encontrar la
interseccion con E, sustituımos para obtener
[m(x− x1) + y1]2 = x3 + Ax+B.
Esto se puede escribir de la forma
x3 −m2x2 + ax+ b = 0
Las tres raıces de esta cubica corresponden a los tres puntos de interseccion
de L con E, pero en este caso ya conocemos dos raıces x1 y x2, pues P1 y P2
son puntos de E y L. Por lo tanto si P ′3 = (x′3, y
′3), obtenemos
x′3 = m2 − x1 − x2
y
y′3 = m(x′3 − x1) + y1.
32
Ahora, reflejamos con respecto al eje x para obtener el punto P3 = (x3, y3)
donde
x3 = m2 − x1 − x2 y y3 = m(x1 − x3)− y1.
En el caso que x1 = x2, pero y1 = y2, la recta a traves de P1 y P2 es
vertical, y por lo tanto intersecta a E en O. Reflejando O con respecto al eje
x obtenemos el mismo punto O (es por esto que ponemos O al tope y al fondo
del eje y). Por lo tanto, en este caso
P1 + P2 = O.
Ahora consideremos el caso P1 = P2 = (x1, y1). Cuando los dos puntos
coinciden tomamos la recta L a traves de ellos como la recta tangente, y la
diferenciacion implıcita nos permite encontrar la pendiente m de esta recta
m =3x21 + A
2y1si y1 = 0
(cuando y1 = 0, la recta es vertical y hacemos P1 + P2 = O, como antes). Por
lo tanto, asumiendo que y1 = 0, la ecuacion de L es
y = m(x− x1) + y1,
y como antes obtenemos la ecuacion cubica
x3 −m2x2 + αx+ β = 0.
Esta vez, conocemos solo una raız x1, pero es una raız doble pues L es tangente
a E en P1. Por lo tanto, procediendo como antes obtenemos que
x3 = m2 − 2x1, y3 = m(x1 − x3)− y1.
Finalmente, supongamos que P2 = O. La recta a traves de P1 y O es una
recta vertical que intersecta a E en el punto P ′1 que es el reflejo de P1 con
respecto al eje x. Cuando reflejamos P ′1 con respecto al eje x para obtener
P3 = P1 + P2, regresamos a P1. Por lo tanto,
P1 +O = P1
para todo punto P1 ∈ E.
En resumen tenemos
33
Suma de puntos
Sea E una curva elıptica sobre un cuerpo K definida por y2 = x3 + Ax+B.
Sean P1 = (x1, y1) y P2 = (x2, y2) puntos en E con P1 = O y P2 = O. Tenemos
que P1 + P2 = P3 = (x3, y3) es como sigue:
i) Si x1 = x2, entonces
x3 = m2 − x1 − x2, y3 = m(x1 − x3)− y1, donde m =y2 − y1x2 − x1
.
ii) Si x1 = x2 pero y1 = y2, entonces P1 + P2 = O.
iii) Si P1 = P2 y y1 = 0, entonces
x3 = m2 − 2x1, y3 = m(x1 − x3)− y1, donde m =3x21 + A
2y1.
iv) Si P1 = P2 y y1 = 0, entonces P1 + P2 = O.
Ademas, definimos
P +O = P para todo P en E.
Cuando P1 y P2 tienen coordenadas en un cuerpo L extension de K, entonces
P1 + P2 tambien tiene coordenadas en L.
Por lo tanto E(L) es cerrado bajo la suma de puntos que acabamos de
definir.
Teorema 3.4.1. La suma de puntos en una curva elıptica E, satisface las
siguientes propiedades:
1. Conmutativa
P1 + P2 = P2 + P1 para todo P1, P2 ∈ E.
2. Existencia del neutro
P +O = P para todo P ∈ E.
3. Existencia de inverso
Dado P ∈ E, existe P ′ ∈ E tal que P + P ′ = O.
4. Asociativa
(P1 + P2) + P3 = P1 + (P2 + P3) para todo P1, P2, P3 ∈ E.
34
En otras palabras, los puntos de E forman un grupo abeliano aditivo con Ocomo elemento neutro.
Prueba. La conmutatividad es obvia, del hecho de que la recta a traves de P1
y P2 es la misma que la recta a traves de P2 y P1.
La propiedad de existencia del elemento neutro O, se cumple por definicion.
Por otro lado si P esta en E y P ′ es el reflejo de P con respecto al eje x,
entonces P + P ′ = O.
La asociatividad es la propiedad mas sutil y menos obvia de la suma de
puntos de E, [6] muestra los detalles de la prueba de esta propiedad.
Observacion: En la ecuacion de Weierstrass, si P = (x, y), entonces −P =
(x,−y).Para la ecuacion generalizada (3.1), si P = (x, y) esta en la curva descrita por
(3.1), se prueba que
−P = (x,−a1x− a3 − y).
Conjetura 3.4.2. En la curva
y2 = x3 − 25x,
tenemos
2(−4, 6) = (−4, 6) + (−4, 6) =
(1681
144,−62279
1728
).
Tambien tenemos
(0, 0) + (−5, 0) = (5, 0), 2(0, 0) = 2(−5, 0) = 2(5, 0) = 0.
NOTA: Multiplicacion Puntual
Si P es un punto de una curva elıptica E, y k es un entero , entonces
kP denota P + P + · · ·+ P (con k sumandos, k > 0).
Si k < 0, entonces kP = (−P ) + (−P ) + · · ·+ (−P ), con |k| sumandos.
Para calcular la multiplicacion puntual kP , cuando k es un entero muy grande,
es mas rapido y eficiente usar el metodo de las duplicaciones sucesivas. Por
ejemplo, para calcular 40P , calculamos 2P, 4P = 2P + 2P, 8P = 4P + 4P,
16P = 8P + 8P, 32P = 16P + 16P y por ultimo 40p = 32p+ 8p.
Este metodo nos permite calcular kP para k grande, mas rapidamente. La
dificultad es que el tamano de las coordenadas de los puntos se incrementan
35
velozmente si trabajamos por ejemplo sobre los numeros racionales.
Sin embargo, cuando trabajamos sobre un cuerpo finito, por ejemplo Fp ,
este no es un problema, porque podemos reducir modulo p continuamente
y por tanto los numeros implicados son relativamente pequenos. La asocia-
tividad nos permite hacer estos calculos sin preocuparnos del orden de los
sumandos. Este metodo se puede implementar mediante el siguiente algoritmo.
Algoritmo para calcular [k]P
Sea k un entero positivo y sea P un punto en una curva elıptica E. La
siguiente secuencia genera, el punto kP .
1. Iniciamos con: a = k, B = 0 y C = P .
2. Si a es par, sea a = a/2, y sean B = B, C = 2C.
3. Si a es impar, sea a = a− 1, y sean B = B + C, C = C.
4. Si a = 0, ir al paso 2.
5. Salida B.
El valor en la salida de B, es kP .
36
Capıtulo 4
Materıales y Metodos
Materıales
Este trabajo no esta sujeto a experimentos de laboratorio, sin embargo se ha
desarrollado sobre la base de textos, papers, artıculos, software especializado
experiencias propias y la combinacion apropiada de tecnicas del algebra,
analisis, teorıa de numeros, que han permitido un adecuado desarrollo de este
trabajo. Se ha hecho uso de material de tipo tecnico en el diseno e impresion
de los informes trimestrales y el informe final. Toda la informacion ha sido
procesada en una computadora personal usando un procesador cientıfico
LATEXy un visor Adobe Acrobat para pdf, en concordancia con las direc-
tivas vigentes, mediante el cual se han editado todo el formulismo matematico.
Metodos
Realizada la eleccion de la bibliografıa y la recoleccion de informacion, los
metodos usados en el desarrollo de los temas en cada capıtulo, que han permi-
tido el avance y la exposicion clara del trabajo de investigacion son :
Metodo Deductivo, que se caracteriza por por ser conciso y logico lo
que ha permitido desarrollar la teorıa de curvas elıpticas de una forma
concreta y ordenada.
Metodo inductivo-deductivo que ha permitido el desarrollodel for-
mulısmo que describe los conceptos, ası tambien como el analisis de las
soluciones de los algoritmos y los resultados presentados.
37
Capıtulo 5
Resultados
Un test de primalidad es un algoritmo que, dado un numero de entrada n,
no consigue verificar la hipotesis de un teorema cuya conclusion es que n es
compuesto. Es decir, un test de primalidad solo conjetura que “ante la falta
de certificacion sobre la hipotesis de que n es compuesto podemos tener cierta
confianza en que se trata de un numero primo”. Esta definicion supone un
grado menor de confianza que lo que se denomina prueba de primalidad (o
test verdadero de primalidad) que ofrece una seguridad matematica.
Un algoritmo de prueba de primalidad (o test verdadero de primalidad) es
un algoritmo determinıstico que consiste en que, dado un numero de entrada n,
verifica la hipotesis de un teorema cuya conclusion es que n es primo. Una prue-
ba de primalidad es la verificacin computacional de dicho teorema. Ası pues
se puede hablar de dos grados de certidumbre: las pruebas de primalidad (ex-
iste certidumbre matematica) y los tests de primalidad (existe certidumbre
practica).
Dentro de la teorıa de algoritmos, es importante medir el costo o el tiempo
de ejecucion de un algoritmo. Una buena medida del costo de un algoritmo, es la
cantidad de operaciones aritmeticas elementales que se realizaran al ejecutarlo;
entendiendo por operacion aritmetica elemental como una operacion efectuada
sobre los dıgitos, sea adicion, sustraccion, multiplicacion, division o calculo de
resıduo. Estaremos pensando en terminos de dıgitos binarios o bits.
Por ejemplo, si queremos sumar dos numeros enteros x, y consideremos sus
38
representaciones binarias
k = (km−1, · · · , k1, k0)2 y r = (rm−1, · · · , r1, r0)2
donde los valores de ki y los rj son: 0 o 1.
Para efectuar la suma del modo usual, comenzaremos calculando k0 + r0. Si
este numero es menor que 2 entonces s0 = k0+r0 es el dıgito de las unidades de
k+ r. Pero si k0 + r0 = 2 entonces s0 = 0 y llevo 1(reserva); hasta aquı hemos
realizado una operacion aritmetica elemental.
Procediendo de la misma forma, para k1 + r1 tendremos que hacer una o dos
operaciones elementales, dependiendo si la reserva es nula o no lo es.
Procediendo de manera anloga, el numero total de operaciones aritmeticas
elementales depende de las reservas no nulas que aparezcan a lo largo de la
cuenta, que a lo mas sera 2m; y esto varıa de un numero a otro.
Es importante remarcar que tambien que hay muchas otras operaciones que
la computadora tiene que realizar para efectuar la suma, que no estamos con-
siderando como operaciones aritmeticas elementales, que el afectan el tiempo
de ejecucion de un algoritmo.
Para la multiplicacion de dos numeros enteros, necesitamos multiplicar r por
cada bit de k y despues sumar los resultados, como estamos multiplicando
numeros en base 2, no habra reserva en los productos. Ası, para multiplicar r
por los ki no necesitamos mas de m operaciones aritmeticas elementales, cor-
respondientes a los productos de los ki por los bits de r. Luego para calcular
el producto de r por cada uno de los bits de k, tendremos que realizar como
maximo, k2 operaciones aritmeticas elementales.
Para calcular kr debemos sumar los productos de r por bits de k, considerando
el orden de magnitud de cada bit.
El numero de sumas realizadas en cada columna no puede exceder a 2m, in-
clusive tomando en cuenta las reservas; como tenemos m columnas podemos
sumar todos estos numeros a un costo de 2k2 de sumas elementales. Luego para
calcular kr no necesitamos mas de 2k2 operaciones aritmeticas elementales.
Un metodo, para resolver primalidad, es eficaz, si requiere un tiempo
polinomico respecto a la cantidad de dıgitos; en este caso se desea tener un
algoritmo que decida en un tiempo proporcional a logk n(O(logk n)), si n es un
numero primo o compuesto.
39
5.1. Algoritmo de primalidad de Agrawal,
Kayal y Saxena
Estudiaremos un algoritmo polinomial determinista para certificar que un
numero es primo, descubierto por tres investigados del Tecnologico de Madras,
en Kanpur, la India: Manindra Agrawal, Neeraj Kayal y Nitin Saxena, dado
a conocer en agosto del 2002, como AKS que resuelve un problema de la
Teorıa de Numeros que estuvo abierto por milenios, y tambien un problema
de la complejidad computacional; pero lo mas impactante es la simplicidad
de su procedimiento, pues la mayorıa de tecnicas matematicas usadas en
el algoritmo y en sus demostraciones eran conocidas en siglo IXX; excepto
la nocion de costo de un algoritmo(que se dio a finales del siglo XX) y un
resultado sobre la distrubucion de primos en intervalos( en 1985).
Este algoritmo posee una complejidad de O((log n)12).
La intension de este trabajo es describir este algoritmo de manera que sea
accesible, con todos sus detalles.
Este algoritmo esta basado en una generalizacion de el pequeno teorema
de Fermat a polinomios, que afirma que si a y n son numeros coprimos, siendo
n numero primo, entonces se cumple la congruencia
(x+ a)n ≡ xn + a (mod n.)
Es decir, si se eleva el polinomio x+ a a la potencia n, entonces el residuo de
dicha division es xn + a. Mas aun, si se cumple esta congruencia entonces n
debe ser un numero primo. Sin embargo, el calculo de (x + a)n requiere mas
tiempo que la Criba de Eratostenes. En su lugar se utiliza la congruencia
(x+ a)n ≡ xn + a (mod xr − 1, n)
Es decir, la equivalencia entre los residuos de los polinomios(x+a)n y xn+a
despues de haber sido divididos por xr − 1 y a su vez cada coeficiente por n,
es decir que (x+ a)n = xn + a en el anillo
Zn[x]/(xr − 1)
40
Algunos numeros compuestos n satisfacen esta congruencia, pero si se elige
r de manera adecuada y se cumple la congruencia para varios valores de a,
entonces n debe ser o un numero primo o al menos una potencia de un primo.
El orden de un numero a modulo n se denota por on(a) y representa el valor
de k mas pequeno para el cual ak ≡ 1 (mod n).
El algoritmo AKS selecciona el valor r como el mas pequeno que cumple
or(n) > log22(n).
Ademas de esto el algoritmo tambien requiere conocer la funcion de Euler y el
maximo comun divisor.
La correcion del algoritmo esta garantizada por un teorema que inicialmente
fue demostrado por los autores y posteriormente resumido por Lenstra,Junior
y Bernstein.
Es decir, dicho teorema afirma que si n, r, v son enteros positivos, y si S es
un conjunto finito de enteros, entonces n es una potencia de un numero primo
bajo ciertas condiciones que veremos mas adelante.
Idea del algoritmo
El siguiente teorema es una generalizacion del TPF y puede tomarse como
un criterio determinista.
Teorema 5.1.1. 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 numeros considerablemente grandes,el criterio dado por
este teorema no es eficiente, ya que requiere evaluar O(n) coefientes. Ası,
la idea basica de AKS fue reducir el numero necesario de pasos para la
verificacion de la primalidad.
La aportacion de AKS es verificar solo
(x+ a)n ≡ (xn + a) mod (xr − 1, n)
para potencias r ”pequenas”, donde mod (xr−1, n) significa evaluar los poli-
nomios en el anillo cociente Zn[x]/(xr − 1).
41
Resulta que todos los numeros primos cumplen este criterio, sin embargo tam-
bien algunos numeros compuestos lo cumplen para pocas parejas (a; r), por
lo que hay que descartar esos casos. El algoritmo elige primero ( en los pasos
del 3 al 10) una potencia r adecuada, es decir, tal que sea un numero primo
y r − 1 tenga un factor q de valor alrededor de r12 . Se puede probar que tales
potencias r existen.
Finalmente el algoritmo verifica ( los pasos del 11 al 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
√rlogn.
En caso que ası suceda, esto es suficiente para declarar que n es primo.
Veamos primero paso a paso algunos detalles de implementacion del algo-
ritmo. Es importante mencionar que en aplicaciones criptograficas, donde es
necesario generar un numero primo de cierta longitud, se procede primero a
generar un numero 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 numero n sea una potencia b-esima de un
numero 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 = ⌊n 1n ⌋. Entonces resultara que n es una potencia perfecta si y solo si cb = n.
Ası pues, el paso 1 se puede verificar con la siguiente rutina:
Para b = 2 hasta ⌊logn⌋ hacer
si c = n1b es un entero, entonces compuesto.
Paso 2 En esta etapa del algoritmo se busca un numero primo r tal que
r − 1 tenga un factor q ≥ 4√rlogn tal que q|or(n), donde or(n) denota al
orden de n modulo r. Este numero r se busca de manera exhaustiva, es decir,
se comienza desde r = 2 y se detiene hasta que se encuentra el deseado. La
42
existencia del numero r esta garantizada por un resultado debido a E. Fouvry
en 1985. El segundo proposito de esta etapa es detectar si acaso n tiene
factores pequenos.
Paso 3 Aquı simplemente se inicializa r = 2. Realmente debe de iniciarse
con r = 3 para verificar solo los numeros impares. Se continua en la busqueda
de r en tanto r < n.
Paso 4 Si mcd(n; r) = 1, entonces hay un divisor de n. Por lo tanto, el
resultado del algoritmo ha de ser compuesto.
Paso 5 Solo se pasa al siguiente paso si r es primo,lo que se puede verificar
mediante el ensayo de divisiones. Realmente se verifica solo a aquellos r
impares; esto es, el incremento del paso 9 debe ser +2.
Paso 6 Aquı se localiza el factor primo q mas grande de r − 1. Mediante
busqueda exhaustiva, se en- cuentra el factor impar mas grande de r − 1. Se
puede realizar esta busqueda mediante el siguiente seudocodigo:
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√rlogn y si q divide al orden de n modulo
r, mediante la prueba nr−1q 1 modr.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 tanto nr−1q ≡ 1 modr. Es decir or(n)|r− 1, pero or(n)|(r− 1)/q, por lo
cual or(n)q|or(n).Paso 8 Es importante notar que es necesario que n posea un tamano al
menos de 15 bits para poder encontrar el numero r buscado.
Paso 9 Si r no es primo, se continua buscando. La actualizacion deberıa de
ser r := r + 2 que es el siguiente numero impar.
Paso 10 Se termina la busqueda de r. Esto queda garantizado por el resultado
de Fouvry.
En la ultima etapa del algoritmo, se revisa si acaso
(x− a)n ≡ (xn − a) mod(n, xr − 1) para a = 1, · · · , 2√r log n.
Si no se cumpliera para algun a, entonces n ha de ser compuesto.
43
De lo contrario n, sera un numero primo.
Paso 11 Se recorren los numeros 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 ≡ (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.
Luego con el aporte de H. Lenstra, los mismos autores publican una nueva
version del algoritmo AKS, que tiene tambien tres etapas, la primera revisa si
n es una potencia perfecta. Los metodos aquı conocidos pueden perfeccionarse
hasta lograr un tiempo lineal.
La segunda etapa consiste de nuevo en buscar un r adecuado y tambien elim-
inar la posibilidad de que n tenga factores pequenos. Finalmente la ultima
etapa consiste 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 mas el esfuerzo mayor se hace en evaluar (x+ a)nmod(xr − 1) y par-
ticularmente, como se observa en el paso 5 del algoritmo anterior, si n fuese
primo es necesario evaluar todos los valores de a, posibles.
El resultado de AKS fue escrito mas formalmente por D. Bernstein y se
resume en el siguiente teorema:
Teorema 5.1.2. (Agrawal, Kayal, Saxena) Sea n un entero positivo, sean q, r
dos numeros primos y sea S un conjunto finito de enteros. Suponiendo que :
1. q divide r − 1,
2. n(r−1)
q mod r ∈ 0, 1,
3. mcd(n, b− b′) = 1 para todos los elementos diferentes b, b′ ∈ S,
4.(♯S+q−1
♯S
)≥ n2
√⌊r⌋,
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.
44
A propuesta de H. Lenstra, el resultado queda reformulado de la siguiente
manera:
Teorema 5.1.3. (Agrawal, Kayal, Saxena, Lenstra)
Sea n, r dos enteros positivos y sea S un conjunto finito de enteros. Suponiendo
que :
1. n es una raız primitiva modulo r,
2. mcd(n, b− b′) = 1 para todos los elementos diferentes b, b′ ∈ S,
3.(♯S+q−1
♯S
)≥ n2
√⌊r⌋,
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 primo,
pero esto es claro , ya que n no es una potencia perfecta ni posee factores
pequenos ni satisface el teorema AKS.
La parte mas difıcil es demostrar que si el algoritmo produce como salida
primo, entonces en efecto n es primo; para esto se se construye de manera
conveniente un grupo cıclico G a partir de los elementos r, q dados por el al-
goritmo. G es un subgrupo del grupo multiplicativo (Fp[x]/h(x))∗, siendo h(x)
un polinomio irreducible. Entonces se ha de mostrar que n es una potencia
del primo p o bien tiene factores pequenos; pero como esta posibilidad ha sido
descartada previamente se debe tener que n es primo.
Los resultados obtenidos en esta investigacion son los siguientes
Determinar la primalidad de numeros enteros es de vigencia actual, este
problema ha sido abordado con metodos de algebra basica y se han
obtenido resultados satisfactorios; tambien ha sido abordado con teorıas
no tan basicas como la teorıa de curvas elıpticas obteniendo tambien
optimos resultados.
El algoritmo AKS esta basado en teorıa sencilla, lo que lo hace manejable
y accesible por la gran mayoria y aunque en su forma original no es muy
45
practico, pues requiere mucho tiempo de ejecucion O(logn10.5); con las
mejoras, ajustes y contribuciones de Lenstra, Berstein y Berizbetia se
tiene que el algotritmo tiene un tiempo promedio de O(logn6), lo que lo
hace eficiente; mas aun se considera que se podrıa mejorar y alcanzar un
perfeccionamiento de O(logn3).
El algoritmo de curvas elıpticas, es mas preciso que el algoritmo AKS,
pero usa una teorıa basada en algoritmos para determinar el numeros
de puntos de curvas elıpticas, en generar curvas de deterninado orden
especıfico que sea apropiado al problema a tratar, que no es tarea nada
facil y es tambien de investigacion actual, lo que lo hace poco accesible
y poco manejable por las mayorıas.
Comparando los metodos AKS con el metodo de curvas elıpticas,ambos
tiene susventajas y sus desventajas; y para optimizar los resultados serıa
apropiado combinar los dos metodos para hacer mas eficiente los resul-
tados.
5.2. El algoritmo de primalidad con curvas
elıpticas
El Test de la curva elıptica decubierto en la decada de 1990 se basa en el
hecho de que una curva eıptica plana no singular, descrita por una ecuacion de
tercer grado es tal que, es posible definir una adicion en el conjunto de puntos
de la curva, la cual determina sobre sobre la curva una estructura de grupo
abeliano. Tratando de mejorar los algoritmos clasicos y obtener optimas prue-
bas de primalidad se ha trabajado con la factorizacion de formas polinomicas
de n. Entre estos algoritmos destacan el algoritmo debido a Adleman, Pomer-
ance y Rumely (APR) y la version mejorada que sobre este hicieron Cohen y
Lenstra (APR-CL) obtiene complejidades casi polinomiales.
Desde 1886 Goldwasser, Kilian y Atkin empezaron a trabajar en curvas
elıptica modulo n, y fue este ultimo quien definio el metodo ECPP o prueba
de primalidad por curva elıptica (Elliptic Curve Primality Proving), que tiene
46
diversas implementaciones y se ha probado que es de orden polinomial para
casi todas las entradas.
El algoritmo de Goldwasser-Kilian (GK)
Teorema 5.2.1. Sea N un entro coprimo con 6, E una curva elıptica sobre
Z/NZ y un punto P sobre E. Consideremos ademas m, s dos enteros tales
que s|m. Para cada divisor primo q de s tenemos (m/q)P = (xq : yq : zq). Si
mP = O y MCD(zq, N) = 1 para todo q, entonces:
Si p es un divisor primo de N entonces ♯E(Z/pZ) ≡ 0 mod s
Mas aun, si s > ( 4√n+ 1)2 entonces N es primo.
Prueba. Sea p un factor primo de N ; los calculos sobre la curva cuando
es reducida modulo p, implica que s divide al orden de P sobre E(Fp). Mas
aun, si s > ( 4√n + 1)2, entonces tenemos que ♯(E(Fp) > ( 4
√n + 1)2; por el
teorema de Hasse tenemos que ♯(E(Fp) < (√p + 1)2. Luego tenemos que
p12 > n
14 , ası p > n
12 .
Como n tiene todos sus factores primos mayores que su raiz cuadrada,
entonces N debe ser primo. Esto concluye la prueba.
Este teorema nos permite obtener un algoritmo para probar que un entero
n, el cual ya se conoce que es un “ probablemente primo”, es definitivamente
un primo.
Combinando este teorema con el algoritmo de Schoof que nos permite calcular
♯E(Z/pZ) en tiempo O((logp)8+ϵ), ( esto lo podemos encontrar en [17])
obtenemos el algoritmo de Goldwasser -Kilian.
Algoritmo de Goldwasser-Kilian:
Sobre la base de este ultimo teorema, Goldwasser y Kilian presentaron un
test algorıtmico de primalidad con complejidad de tiempo polinomial.
Dado un entero libre de cuadrados n tal que n > 232 con grandes posibilidades
de que es un numero primo (en particular con MCD(n,6)=1) y que de
preferencia que ya ha pasado por un test de “probablemente primo”), este
47
algoritmo intenta reducir el tema de la primalidad de n a la primalidad de un
numero mas pequeno q.
El algoritmo al final saca la siguiente informacion, segun sea el caso : “ n es
compuesto”, o “si q es primo entonces n es primo”, donde q es mas pequeno
que n.
1. Escogemos una curva elptica E sobre Z/NZ, tal que el numero de puntos
m(calculados con el algoritmo de Schoof) satisfaga que m = 2q, con q un
primo probable(entero que ha pasado todos los pseudo test de primali-
dad).
2. Si (E,m) satisface las condiciones del teorema con s = m, entonces N
es primo, encaso contrario es compuesto.
3. La primalidad de q se prueba de la misma forma.
4. Final.
En este algoritmo, sucesivamente vamos creando curvas y calculamos su cardi-
nal hasta obtener una que realmente nos sirva para realizar el certificado. De
hecho, lo que hacemos es buscar una curva especıfica para el primo dado, es
decir, que para cada primo creamos un certificado especıfico.
En el proximo algoritmo se hace justamente lo contrario, creamos una curva
con el numero de puntos que necesitamos, sin necesidad de realizar prueba y
error. En este algoritmo, debido a la complejidad que supone la aplicacionn
del algoritmo de Schoof para primos grandes, se cambia esa tecnica por las
propiedades derivadas de la multiplicacion compleja en las curvas elıpticas.
Este metodo es muy utilizado actualmente.
Algoritmo de primalidad con curvas elıpticas (ECPP)
Procedimiento (N es un probable primo)
1. Sea i := 0, N0 := N ,
2. si Ni > N
48
a) hallar un discriminante fundamental −Di que sea bueno para Ni,
en otras palabras Ni = πiπ′i en K = Q(
√−Di);
b) si uno de los numeros m1, ...,mw es probablemente factorizado, ir
al paso 2.c, caso contrario al paso 2.a;
c) si guardamos i, Ni, Di,mr, Fi donde mr = FiNi+ 1 donde Fi
puede ser factorizado completamenbte y Ni+1 es probablemente pri-
mo; sea i := i+ 1 y luego ir al paso 2.a;
d) calcular una raiz j del polinimio HDi(X) ≡ 0 mod Ni;
e) calcular una ecuacion de la curva Ei de invariante j y cuyo cardinal
modulo Ni es Mi;
f ) hallar un punto Pi de la curva Ei;
g) verificar las condiciones del teorema con s = Ni+1 y m = mi, es
decir verificar que Qi = FiPi = OEipero sQi = OEi
3. Terminar.
49
Capıtulo 6
Discusion
El problema de primalidad ha sido tratado con teorıas complicadas, tales
como curvas elıpticas; por lo que ha sido una gran sorpresa para muchos, que
con metodos de teorıa de numeros basica se tenga una solucion satisfactoria a
este famoso problema.
En el caso de AKS, el primer ajuste lo hizo Lenstra, como ya se menciono y fue
publicado por los mismos autores mejorando el tiempo a O(logn6.5); posterior-
mente se dan otros perfeccionamientos, algunos presentados por D.Berstein ,
particularmente con el calculo mejorado de (x+a)n en el anillo Zn[x]/(x−1)r.
Otra propuesta mas fue hecha por P. Berrizbeitia y consiste en la comprobacion
de la igualdad (x+a)n = (xn+a) mod (xr−1) por la de (mx+1)n = (1+mxn)
mod (x2n − a), para valores s,m adecuados. Esto reduce el numero de evalua-
ciones polinomiales, lo cual, naturalmente es lo mas deseado. La modificacion
da como resultado primos n ≡ ±1 mod 4.
Por otra parte, se han comparado los metodos AKS con el que utiliza curvas
elıpticas, y se ha propuesto combinar los dos metodos para hacer mas eficiente
la busqueda.
Finalmente, los autores del algoritmo AKS preveen que si se resuelven algunas
pequenas conjeturas, AKS puede alcanzar un perfeccionamiento O(logn3),lo
que serıa una muy buena noticia, ya que los tiempos aceptables son O(logn4),
pero por el momento debemos conformarnos con un algoritmo de tiempo
promedio O(logn6).
50
Capıtulo 7
Referencias Bibliograficas
51
Bibliografıa
[1] Crandal,R.-Pomerance,C. PRIME NUMBERS, A COMPUTATIONAL
PERSPECTIVE, New York :Springer,2 Edic. 2005.
[2] Silverman, J.H. THE ARITMETIC OF ELLIPTIC CURVES, New York:
Springer-Verlag,1986.
[3] Agrawal, M. , Kayal, N. y Saxena, N. PRIMES IS IN P,
Annal of Mathematics(Ann. of Math.)., 2004 vol. 160, pp. 781-793.
[4] Koblitz, N. A COURSE IN NUMBER THEORY AND CRIPTOGRA-
PHY,new York: Springer-Verlag,1994.
[5] Knap,Anthony W. ELLIPTIC CURVES, London: Princeton University
Press,1 Edic. 1992.
[6] Cohen, H., A COURSE IN COMPUTATIONAL ALGEBRAIC NUMBER
THEORY. Berlin: Springer, Primera Edicin, 1993.
[7] Knuth, D. , THE ART OF COMPUTER PROGRAMMING., New York:
Addison-Wesley Publishing Co., 2nd edition, 1980.
[8] Rabin, M.,PROBABILISTIC ALGORITHMS FOR TESTING PRIMAL-
ITY. Journal Number Theory, 1980 vol. 12, pp. 128-138.
[9] Joye, M. y Paillier, P., FAST GENERATION OF PRIME NUMBERS ON
PORTABLE DEVICES: AN UPDATE. Lecture Notes in Comput. Sci.,
2006, vol. 4249, pp.160-173.
[10] Berrizbeitia, P., SHARPENING PRIMES IS IN P FOR A LARGE FAM-
ILY OF NUMBERS, Math. Comp., 2005, vol. 74, pp. 2043-2059.
51
[11] Del Valle, Jose C., EL SECRETO DE LOS NUMEROS PRIMOS., Es-
pana: Editorial Club Universitario, 1ra edicin, 2006.
[12] Berrizbeitia, Pedro., PRUEBAS DETERMINSTICAS DE PRIMALI-
DAD. Gaceta Real Ac.Esp. , 2001, Vol. 4, pp. 447-456 .
[13] Lenstra,A.K.- Lenstra, H.W, ALGORITHMS IN NUMBER THEORY.
Hand book of Theoretical Computer Science,Chapter 12., Elsevier Science
Publisher B.V. 1990.
[14] Ankeny,C.N., THE LEAST QUADRATIC NON RESIDUE
., Annals of Mathematics, Vol.9. 55ra , N1, Jannuary 1952.
[15] Lenstra, H.W., ELLIPTIC CURVES AND NUMBER THEORETIC AL-
GORITHMS. Tech. Rep. Report 89-19. Math. Inst. Univ., Amsterdam,
1986.
[16] Bressou, D.M., FACTORIZATION AND PRIMALITY TESTING, New
York: Springer-Verlang,1989.
[17] Cohen, H., A COURSE IN COMPUTATIONAL ALGEBRAIC NUMBER
THEORY, New York : Springer-Verlag, 1993.
52
Capıtulo 8
Apendice/Anexos
NUMERO PRIMO DE SOPHIE GERMAIN.
Un numero primo es un numero de Sophie Germain si al multiplicarlo
por 2 y sumarle 1 el resultado es tambien un numero primo. Por ejemplo el
2 es numero primo de Sophie Germain por ser un numero primo y cumplirse
2x2 + 1 = 5 siendo 5 tambien numero primo.
NUMEROS PRIMOS DE SOPHIE GERMAIN, MENORES DE 1000.
2 3 5 11 23 29 41 53 83 89
113 131 173 179 191 233 239 251 281 293
359 419 431 443 491 509 593 641 653 659
683 719 743 761 809 911 953
53
ALGUNOS PRIMOS DE MERSENNE CONOCIDOS
Num. de orden Exponente Ano de descubrim. Descubridor
1 2 Anonimo
2 3 Anonimo
5 13 1456 Anonimo
7 19 1588 Cataldi
8 31 1772 Euler
9 61 1883 Pervushin
10 89 1911 Powers
12 127 1876 Lucas
13 521 1952 Robinson
15 1279 1952 Robinson
18 3217 1937 Riesel
20 4423 1961 Hurwitz
23 11213 1963 Gillies
25 21701 1978 Noll y Nickel
27 44497 1979 Nelson y Slowinski
30 132049 1983 Slowinski
31 216091 1985 Slowinski
34 1257787 1996 Slowinski y Gage
36 2976221 1997 GIMPS
37 3021377 1998 GIMPS
38 6972593 1999 GIMPS
39 13466917 2001 GIMPS
Esta informacion ha sido extraıda de: http://www.mersenne.org/prime.html
54
LOS DIEZ PRIMOS GEMELOS MAS GRANDES
Numero Primo Numero de dıgitos Ano de descubrimiento
33218925 · 2169690 ± 1 51090 2002
318032361 · 2107001 ± 1 32220 2001
1807318575 · 298305 ± 1 29603 2001
665551035 · 280025 ± 1 24099 2000
781134345 · 266445 ± 1 20011 2001
1693965 · 266443 ± 1 20008 2000
83475759 · 264955 ± 1 19562 2000
291889803 · 260090 ± 1 18098 2001
4648619711505 · 260000 ± 1 18075 2000
2409110779845 · 260000 ± 1 18075 2000
Esta informacion ha sido extraıda de:
http://www.utm.edu/research/primes/index.html
55
Recommended