Criterios de Primalidad

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 61

c

Universidad de Panamá
Facultad de Ciencias Naturales Exactas y Tecnologías
Escuela de Matemática

Criterios de Primalidad.

Presentado por:
Fezel Bhana Hafeji
Ced: 8-815-486

Dirigido por:

Dr. Jaime Gutiérrez

Este trabajo es presentado en el


Seminario para optar por el Título de
Licenciatura en Matemática.

Ciudad Universitaria, Octavio Méndez Pereira


Panamá, 2010
c

Dedicatoria
c

c
c

A mi padre Aziz Bhana, mi madre Fátima Aziz Bhana, a mis hermanos


Yasin y Sohel Bhana; a toda mi familia y amigos, en especial a mi gran
amiga Zugeily D. Tejeira C.

c
c

Agradecimiento

En primer lugar a mi Dios misericordioso, por darme la


oportunidad y conocimiento para llevar a cabo este trabajo; a mis
padres y hermanos; a todos los profesores, en especial al Prof.
Dr. Jaime Gutiérrez, por dirigir mí trabajo de seminario; a mis
compañeros; y por último, que siempre están presentes, a mis
sinceros y verdaderos amigos.

Gracias«

c
c

c
c

Îndice

åntroducción

Marco Histórico
@c Anteriores a la Antigua Grecia
@c Antigua Grecia
@c Edad Oscura
@c Matemáticas modernas
@c Siglo XåX
@c Siglo XX y la algorítmica moderna.

Marco Teórico
@c Definición de Divisibilidad
@c ãa existencia de infinitos números primos
@c Teorema Fundamental de la Aritmética
@c Definición de Primalida
@c Tests de Primalidad (definición).
@c Algoritmos de factorización
@c ãos Criterios de Primalidad
†c División por Tentativa
†c Criba de Eratosthenes
†c Pequeño teorema de Fermat
†c El método de factorización de Fermat
†c Primos de Mersenne
†c Método de factorización de Euler
†c El teorema de Proth
†c Test de Pépin
†c Test de Wilson
†c Teorema de Wolstenholme
†c Test de ãucas
†c Test de Pocklington
†c Test de ãucas-ãehmer
†c Solovay-Strassen(SS)
†c Método de factorización rho de Pollard.
†c Primalidad y curvas elípticas

Aplicación

Conclusiones

Bibliografía
åntroducción

En este trabajo queremos ilustrar la fascinación por los números primos de matemáticos,
profesionales y aficionados por igual, desde la antigüedad hasta nuestros días.

Explicaremos la evolución de los números primos a lo largo de la historia, como ha


sido el esfuerzo de la humanidad por comprender los números primos que en mi opinión
son un claro ejemplo de la belleza y el encanto de esta ciencia. El estudio de los
números primos ocupa un lugar destacado en la historia de las Matemáticas y muchos
de los grandes matemáticos han ligado su nombre y esfuerzo a ellos. ãa lista sería
interminable, citemos solo algunos: Euclides, Fermat, Euler, Gauss, etc. Todos ellos y
otros muchos han ido añadiendo piezas al rompecabezas de los números primos.

Hay que destacar una cantidad infinita de primos, y la demostración de este teorema se
remonta sobre el año 300 A.C. porc c c Euclides y es un buen ejemplo de la
belleza de las Matemáticas.cãa propiedad más importante de los números primos es que
constituyen las piezas básicas en las que se descompone cualquier número natural. El
Teorema Fundamental de la Aritmética dice que todo numero natural mayor o igual que
2 puede ser expresado, de manera única, como producto de números primos. c

Otro aspecto importante es aquel que los hace útiles: la seguridad del comercio por vía
electrónica se confía hoy a códigos construidos usando estos números indivisibles.
Gracias a los números primos y sus propiedades se pueden hacer conexiones seguras
por canales inseguros, acreditar identidades, etc. Por tanto interesan a informáticos e
ingenieros y al mundo gubernamental y empresarial.

Mi objetivo principal en este trabajo ha sido en presentar los criterios de primalida,


realizando un recorrido a través de la historia de la Matemática, además enlistaremos
estos criterios.
Comenzaremos con los distintos algoritmos usados para comprobar la primalidad.
Empezaremos por los algoritmos griegos y árabes.
Seguidamente trataremos los certificados de primalidad y composición clásicos, como
por ejemplo, el test de Willson nos ilustra un algoritmo que a primera vista parece
eficiente, pero del que actualmente no se sabe si lo es o no.
Más adelante, en el siglo XX y la algorítmica moderna. Entre los más importante se
encuentra el algoritmo de Solovay-Strassen. También podemos destacar el algoritmo de
Miller-Rabin, hoy por hoy, uno de los mejores y más rápido test de primalidad.

Posteriormente nos meteremos con los test en la clase RP basados en curvas elípticas.
Hablamos del ECPP y del APRCã. Para finalizar este apartado introduciremos el
reciente test AKS. Para terminar, comentaremos las implicaciones que trae el algoritmo
en sí mismo, sobre todo lo referente a la seguridad informática, criptografía y el
criptosistema RSA.
Uno de los problemas más estudiados en la historia de las matemáticas ha sido el
determinar si un número es primo o compuesto. Dichos estudios y sus propiedades
fueron estudiados de manera exhaustiva por los matemáticos de la antigua Grecia.

Anteriores a la Antigua Grecia:

Paleolítico Superior (33.000 a. C. y el año 9.000 a.c.)

Antes de la Antigua Grecia, se puede resaltar, se cree que el hombre primitivo tenía
conocimiento acerca de los números primos, prueba de estos se encuentra en el hombre
del Paleolítico Superior (33.000 a. C. y el año 9.000 a.c.), gracias a que en 1960 fue
hallado por el arqueólogo Jean de Heinzelin de Braucourt, las muescas presentes en el
hueso de åshango y parece aislar cuatro números primos: 11, 13, 17 y 19.

Los Egipcios:

Siglos más tarde en las matemáticas egipcias. ãos egipcios sólo operaban con las
llamadas fracciones egipcias, suma de fracciones unitarias, es decir, aquellas cuyo
numerador es 1, como:

ö ö ö ö
   
  

El cálculo de fracciones requería conocimientos sobre las operaciones, la división de


naturales y la factorización. Es por ello que, en cierta manera, tenían que conocer o
intuir los números primos.
Antigua Grecia:

Ya en la antigua Grecia aparecen numerosos estudios.

Escuela Pitagórica (500 a. c. a 300 a. c.):

ãos números primos y sus propiedades fueron estudiados intensamente por los antiguos
matemáticos griegos, especialmente por la escuela Pitagórica. Pitágoras de Samos es
uno de los personajes más misteriosos de las matemáticas. Estudió las propiedades de
cada número, las relaciones entre ellos y las figuras que forman. Fundó la Hermandad
Pitagórica, una comuna formada con discípulos que debían prestar juramento de no
revelar al mundo exterior ninguno de sus descubrimientos. Esto explica que hoy
dispongamos de tan pocos datos fidedignos sobre sus logros matemáticos.

ãa doctrina de los pitagóricos tenía esencialmente carácter religioso, fundamentalmente


consistió en que la sustancia de las cosas era el número. ãos pitagóricos tuvieron gran
interés por ellos debido a que pensaban que los números gobernaban el mundo y tenían
propiedades místicas y "mágicas". ãa naturaleza, las estrellas, todo estaba basado en
relaciones numéricas enteras o fraccionarias.
ãa obsesión por los números y la adoración que les profesaban, condujeron a los
pitagóricos a un estudio minucioso de los números.

De entre la infinidad de números la hermandad se fijó en los que poseen propiedades


especiales y entre ellos se encontraban los números primos, por su naturaleza
indivisible, presentan todas las características para ser "adorados" por los discípulos de
Pitágoras y los números perfectos o divinos. Según Pitágoras, la perfección numérica
dependía de los divisores del número. Es por eso que ellos comprendían la idea de
primalidad.
Euclides de Alejandría (300 a. C.):

Seguidamente en el año 300 a. C. en que los Elementos Euclidianos aparecieron, ya


habían sido probados varios resultados importantes acerca de números primos. En el
ãibro åX de los Elementos, "El Padre de la Geometría" Euclides de Alejandría prueba
que hay infinidad de números primos. Esta es una de las primeras demostraciones
conocidas en la que se utiliza el método del absurdo para establecer el resultado.
Además demuestra el Teorema Fundamental de Aritmética: Todo entero puede ser
escrito como un producto único de primos.

Euclides también demostró que si el número 2n - 1 es primo, entonces el número 2n-1(2n


- 1) es un número perfecto. Como aparece en el libro åX, proposición 36 de sus
³Elementos´, Euclides escribe: ³Si tantos números como se quiera a partir de una
unidad se disponen en proporción duplicada hasta que su suma total resulte un número
primo, y el total multiplicado por el último produce algún número, el producto será un
número perfecto.´

Notemos que la suma, s = 1 + 2 + 22 + · · · + 2n 1, es igual a 2n-1. As podemos


establecer este enunciado de la siguiente manera:
Teorema (Euclides). Si 2n-1 es un número primo, entonces (2 n-1) · 2 n -1 es un número
perfecto.
Euclides descubrió la fórmula para obtener números perfectos. As pues, el número
encerrado entre paréntesis es un primo, el cual es un número muy conocido (más
adelante lo mencionaremos).

Eratóstenes de Cirene 200 a. C.:

Eratóstenes, nació en Cirene, la actual ãibia. Estudió en Alejandr a y, durante algún


tiempo, en Atenas y fue gran amigo de Arqu medes. En 236 a. c. Ptolomeo Evergetes le
llamó a Egipto para que se hiciera cargo de la Biblioteca de Alejandría, puesto que
ocupó hasta el fin de sus días, ocurrido durante el gobierno de Ptolomeo V Epífanes.

Griego Eratóstenes ideó un algoritmo para calcular números primos llamado el Tamiz
de Eratóstenes. Este fue el primer criterio de primalidad.

Estas son las más importantes contribuciones de Antigua Grecia a los números primos.
Edad Oscura:

Después de las matemáticas griegas, se da luego un gran vacío en la historia de los


números primos que es usualmente llamado la Edad Oscura.

Matemáticas Modernas:

Como muchas otras aportaciones matemáticas, el problema de la primalidad llegó a la


Europa moderna a través de los árabes, pero no fue hasta muchos siglos después que
aparecieron los primeros registros escritos sobre la primalidad y su solución. Estos
corresponden al matemático italiano ãeonardo de Pisa (Fibonacci) quien presentó un
algoritmo muy simple para determinar si un número n dado es primo.

„ c c


En 1603 El primero en utilizar relaciones observadas entre los números para determinar
la primalidad fue el boloñés Pietro Antonio Cataldi con su trabajo sobre los números
perfectos.
1
Cataldi determinó que si 2Ê 1 es primo entonces Ê ha de ser primo y 2Ê (2Ê 1) ha
de ser perfecto. Este teorema nos introduce una familia de números especialmente
importante para la historia de la primalidad, los llamados números de Mersenne en
honor del filósofo Marin Mersenne (1588-1665), que son números de la forma  = 2
1 donde p es un número primo.

Cataldi descubrió los factores de todos los números hasta 800 y una tabla de todos los
números primos hasta 750 (hay 132). Cataldi usó su lista de primos para demostrar que
217- 1 = 131071 es primo (ya que 7502 = 562500 > 131071, pudo comprobar con un
tedioso cálculo que 131071 no ten a divisores primos). A partir de ah , Cataldi ahora
conoc a el sexto número perfecto: 216(217 - 1) = 8589869056. Además Cataldi usó
también su lista de números primos para comprobar que 219 - 1 = 524287 era primo (de
nuevo ya que 7502 = 562500 > 524287) y de este modo encontró el séptimo número
perfecto: 218(219 - 1) = 137438691328.
Cataldi, a pesar de haber descubierto dos números perfectos, también cometió errores.
Escribió en Utriusque Arithmetices que los exponentes p = 2, 3, 5, 7, 13, 17, 19, 23, 29,
31, 37 daban números perfectos 2p-1(2p - 1). Tenía razón para p = 2, 3, 5, 7, 13, 17, 19
para los que tenía una prueba en su tabla de números primos, pero sólo una de sus
cuatro siguientes aserciones 23, 29, 31, 37 es correcta. En 1640 Fermat mostró que
Cataldi se equivocó para n= 23 y 37, 2n-1 no era primo para esos números; más tarde
Euler en 1738 mostró que Cataldi también había errado para n=29, 2n-1 no era primo
para el número anterior. Más tarde el gran Euler mostró la aserción de Cataldi para
n=31 era correctos.

Pierre de Fermat 1640.

Jurista de profesión y enamorado de las Matemáticas, fue un genio de esta ciencia en su


época. Gracias a él se avanzó en multitud de campos pero, como ya se sabe, su mayor
afición fue la teoría de números.

El próximo gran descubrimiento fue realizado por Fermat en los inicios del siglo XVåå.
Fermat, trabajaba la mayor parte del tiempo en soledad. Su único contacto con el resto
de la comunidad matemática fue gracias a Marin Mersenne. Cabe destacar también un
breve intercambio de cartas con Blaise Pascal. Tuvo la costumbre de no publicar nada,
sino que anotaba o hacía cálculos en los márgenes de los libros o escribía casualmente
sus descubrimientos en cartas a amigos. Realizó una serie de investigaciones sobre las
propiedades de los números, las cuales nunca quiso publicar.

Tras dar detalles sobre un descubrimiento termina diciendo ë  Ê  
 Ê 
Ê

Ê        
Êëãos resultados de
Fermat fueron conocidos por otros pensadores europeos gracias a Mersenne, que los
reenvió e hizo una amplia distribución.

Fermat, en una carta a Mersenne, es capaz de refutar los casos  = 23 y  = 37 de


Cataldi. Prueba que 223 1 y 237 1 son compuestos dando sus factorizaciones y el
procedimiento seguido para encontrarlas:

223 1 = 47·178 481237 1 = 223·616 318 177



Además Fermat es muy conocido en la historia de la matemática por los números que
llevan su nombre (números de Fermat). Fermat conjeturó que todos los números de la
forma ‫ܨ‬௡ ൌ  
 ö eran números primos, ãeonhard Euler demostró en 1732 que eso
no era cierto al obtener para n = 5 un número compuesto:

‫ܨ‬௡ ൌ ൫ 
 ö
ൌ   97 = 641*6700417.

En 1640 Pierre de Fermat estableció (aunque sin demostración) el pequeño teorema de


Fermat, posteriormente demostrado por ãeibniz y Euler( usando casos especiales de su
pequeño teorema. Este Teorema de Fermat es la base de otros muchos resultados en la
Teoría de Números y además es la base de métodos de verificación de números primos
que se utilizan aún hoy en ordenadores electrónicos.
Y por último Pierre Fermat ideo un método de factorización, después de la división por
tentativa, es uno de los métodos más antiguo que se conocen, se basa en las diferencias
entre cuadrados y que es especialmente eficaz cuando Ê es el producto de dos números
primos próximos entre sí.

Marin Mersennec c

Fue un fraile franciscano que pasó la mayor parte de su vida en los monasterios
parisinos.

Paralelamente a Pierre Fermat en el siglo XVåå. El monje francés. Mersenne fue lo más
parecido al centro de una red de intercambio de información científica. Tuvo una
nutrida correspondencia con diversos eruditos de Francia, åtalia, ånglaterra y Holanda,
tales como Pierre Gassendi, Descartes, Pierre de Fermat, Galileo Galilei, Blaise Pascal,
Giovanni Doni y Constantijn Huygens. Durante la estancia de Descartes en Holanda,
Mersenne fue su principal corresponsal y su intermediario con los sabios de la época.
Este intercambio de correspondencia contribuyó al desarrollo de la teoría de números.

roy día( Mersenne es recordado principalmente gracias a los números que llevan su nombre(
los números primos de Mersenne. Entonces Mersenne en 1644, en el prólogo de su libro
Cogitata Physica-Mathematica, escribe que considerando un primo  entre 2 y 257, el
número 2-1 es primo sólo para los números siguientes: 2, 3, 5, 7, 13, 17, 19, 31, 67,
127 y 257. Toda la comunidad matemática opinaba que era imposible que Mersenne
hubiese estudiado tal cantidad de números, pero tampoco había nadie capaz de probar
que su enunciado era incorrecto.

ãa afirmación estaba tan por encima de las posibilidades de la época que tuvieron que
pasar más de 100 años para que alguien hiciese un avance real en su estudio: finalmente
se logró probar que efectivamente el número 231 -1 es un número primo, éste es sólo uno
de la cantidad ingente de resultados matemáticos asociados al nombre del matemático
más prolífico de la historia, el suizo ãeonhard Euler.

Desde el punto de vista histórico, es interesante indicar que la prueba de que el número
de Mersenne correspondiente a n=19 es primo fue dada por Cataldi en 1588. El primer
error en la lista de Mersenne fue descubierto en 1876 por ãucas, probando que 267 1
127
era compuesto, aunque no halla sus factores. Además prueba que 2 1 es un número
primo.

El procedimiento empleado por ãucas fue posteriormente convertido en algoritmo por


ãehmer en 1930 y en la actualidad es la base de toda búsqueda de primos de Mersenne.
En 1883, el monje ruso Pervushin prueba que 261 1 era primo, luego Mersenne hab a
errado con este.Mientras, otros errores de Mersenne siguen apareciendo. En 1911
Powers muestra que Mersenne también hab a errado con los primos 289 1 y 2107 1, en
1922 Kraitchik prueba que 2257 1 no es primo. El estudio del resultado anunciado por
Mersenne no se completó hasta 1947, estableciéndose que la lista correcta es: 2, 3, 5, 7,
13, 17, 19, 31, 61, 89, 107 y 127. Al fi final resultó que Mersenne hab a puesto dos
números de más y tres de menos en su lista original.

Leonhard Eulerjc
c
100 años más tarde. Otro eminente matemático que estuvo interesado en el problema de
la primalidad fue el suizo ãeonhard Euler. Euler, se sintió atraído por los resultados de
Fermat.
Encontró un divisor de ÷  (contradiciendo pues la conjetura de Fermat sobre la
primalidad de ÷ ). Sin embargo, su aportación más importante al problema fue el
enunciado de un teorema relacionado que establece que todo divisor primo de ÷ debe
ser de la forma 2Ê + 1 + 1 para algún݇ ‫ ܰ א‬.

Además como ya conocemos el teorema de los números perfectos de Euclides. Si


௡ିଵ ሺ ௡
‫ ݌‬ൌ െ öܿ‫݊݋‬ሺ ௡
െ ö‫݋݉݅ݎ݌‬ ݊‫݋ݐ݂ܿݎ݌݌ܿ݊݋ݐ‬Ǥ

Euler demostró el recíproco (evidentemente, sólo para perfectos pares), Euler: Un


௡ିଵ ሺ ௡
número par  es perfecto si y solo si ‫ ݌‬ൌ  െ ö ܿ‫݊݋‬ሺ ௡
െ ö‫ ݋݉݅ݎ݌‬. Con lo
que quedó establecida una correspondencia biunívoca entre los números perfectos pares
y los números de Mersenne primos. Desde entonces se conoce como Teorema de
Euclides-Euler.c

Euler también determino un método de factorización, hoy en día se conoce como el


método de Euler, que se basa en la representación de Ê como suma de dos cuadrados de
dos formas distintas.

John Wilson (1770)

El teorema de Wilson es un resultado de teoría de números relacionado con la


primalidad de un número entero positivo. Wilson fue un matemático que no estuvo a la
altura de las expectativas que originó, cuando antes de su graduación en Cambridge
descubrió el teorema que lleva su nombre. Fue atribuido a John Wilson por su profesor
Edward Waring. Éste último comentó que Wilson había dejado anotado este resultado
en un cuaderno pero que no lo había demostrado. No hay evidencia de que Wilson
hubiese hallado la prueba. El propio Waring tampoco pudo hacerlo y tuvo que ser
ãagrange en 1770 quien dio la primera prueba.

Sucede con frecuencia, en la historia de las matemáticas, que los nombres asignados a
las conjeturas, teoremas y principios olvidan a personajes que tuvieron la idea original o
hicieron una contribución fundamental a los mismos. El Teorema de Wilson, en este
sentido, no es una excepción. Este teorema fue descubierto por un matemático hindú
llamado Bhaskara en el siglo Våå, luego explicado por åbn al-Haytham en el año 1000
DC, el teorema era conocido por ãeibniz un siglo antes de nacer Wilson, el inglés
Edward Waring lo planteó por primera vez en una publicación matemática llamada
Meditationes Algebraicae.
Joseph Wolstenholme (1862):

Joseph Wolstenholme, como una consecuencia del test de Wilson, nos da una propiedad
que verifican los números primos w 5, y que fue demostrado por wolstenholme.

ãos números de Wolstenholme se nombran en honor a Joseph Wolstenholme, quien


demostró el teorema que lleva su nombre, el equivalente a la relación matemática 3 en
1862, siguiendo a Charles Babbage quien demostró la equivalencia para 2 en 1819.

François Éduard Anatole Lucas c 1878j

El último de los matemáticos clásicos del que hablaremos que obtuvo notables
resultados sobre la cuestión fue el francés François Éduard Anatole ãucas.

ãucas trabajó sobre los números de Fibonacci y de Mersenne, obtuvo resultados sobre
la divisibilidad de los primeros y determinó una prueba de primalidad para los números
de Mersenne (que aplicó a la comprobación de primalidad de 127)

ãa prueba de ãucas-ãehmer es una prueba que sirve para determinar si un determinado


número de Mersenne  es primo. El test fue desarrollado por Edouard ãucas en 1878 y
subsecuentemente mejorado por Derrick Henry ãehmer en la década de 1930.

Siglo XåX

Durante este siglo se desarrollaron algoritmos para saber si un número es primo o no


factorizando completamente el número siguiente (p+1) o el anterior (p-1). Dentro del
primer caso se encuentra el test de ãucas-ãehmer, desarrollado a partir de 1856. Dentro
del segundo caso se encuentra el test de Pépin para los números de Fermat (1877). El
caso general de test de primalidad cuando el número inmediatamente anterior se
encuentra completamente factorizando se denomina test de ãucas.

Siglo XX y la algorítmica moderna.


Durante este siglo se desarrollan algoritmos eficaces, que contribuyen enormemente a
encontrar los números primos.
Test de Solovay-Strassen (SS). Este test está basado en el criterio de Euler. Sin
embargo años más tarde aparecería otra caracterización de los números primos que
posibilitaría un test sustancialmente mejor que el de  Ê. ãa idea del test
se la debemos a Miller y la posterior mejora a Rabin (que transformó el algoritmo en
probabilista usando las ideas de Solovay y Strassen).

En 1983, Adleman, Pomerance y Rumely presentan el primer algoritmo determinista.


Este algoritmo es conocido como el método ciclotímico por usar precisamente los
polinomios ciclotímicos,

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 dieron a conocer que tres
investigadores del Tecnológico de Madras, en la åndia, M. Agrawal, N. Kayal y N.
Sexena encontraron un algoritmo polinomial determinista para certificar que un número
es primo, cuando en efecto lo es.

Además los métodos de factorización son parte de los criterios de primalidad. Podemos
destacar entre los más recientemente, se han elaborado algoritmos basados en una gran
variedad de técnicas, como las fracciones continuas o las curvas elípticas, aunque
algunos son mejoras de métodos anteriores (la criba cuadrática, por ejemplo, se basa en
una mejora del método de Fermat). Otros, como el método rho de Pollard, son
probabilísticos, y no garantizan hallar los divisores de un número compuesto.

Hoy por hoy, el algoritmo determinístico más rápido de uso general es el General
Number Field Sieve.

De esta forma damos concluido un breve recorrido en la historia del fascinante mundo
de los números primos. Empapándonos sobre el surgimiento y los algoritmos para la
determinación de los números primos.
Antes de enlistar los criterios es importante mencionar, las diversas propiedades
aritméticas de los primos, establecidas por los matemáticos que, fundamentalmente
entre los siglos XVåå y XåX, se ocuparon del tema de forma altruista, sin conexión con
las actividades humanas ordinarias, proporcionan como veremos.

Para introducir el concepto de primalidad es necesario, antes, definir previamente el de


divisibilidad:

Definición de Divisibilidad:

Dados dos enteros a, b decimos que a es un divisor de b si existe otro ¼ ‫ࢆ א‬tal que

b = a · x. Esta ampliamente generalizada la notación a|b para indicar que a divide b.

Ya estamos en condiciones de definir: primalidad.

En primer lugar observemos que si a es cualquier número entero mayor que 1, entonces
 =  · 1, con 1 ‫ א‬Z, es decir,  es un divisor de .
 = 1 · , con  ‫ א‬Z, es decir, 1 es un divisor de .
ãuego todo número entero > 1 tiene, al menos, dos divisores, el 1 y el propio .

La existencia de infinitos números primos:

Euclides fue el primer matemático conocido que dio la primera demostración formal
sobre la infinitud de los números primos, publicada en el libro åX de los Elementos.

Allá por el 300 a.C. en Grecia Euclides publicó la siguiente demostración:

Euclides supuso que había sólo un número finito de números primos.

Sean ଵ      ௡ todos los números primos donde݊ ‫ ܰ א‬.

Construyó el siguiente número. ܳ ൌ ሺଵ ൉  ൉൉൉൉൉ ௡   ö

Es obvio que Q es distinto de cero y además ܳ݊‫݀݋ݐ݊݉݋‬ሼଵ ൉  ൉൉൉൉൉ ௡ ሽ,


es decir Q no es un número primo, entonces Q es divisible por algún  con.݅߳ሼö   ݊ሽ
Ahora bien:

ܳ ‫ ؠ‬ö݉‫߳ ׊ ݀݋‬ሼö   ݊ሽ

Dado que Q no es divisible por ninguno de los primos, es decir no es un número


compuesto, se deduce que Q es un número primo.

Habíamos supuesto que teníamos un número finito, completamente identificado de


números primos y hemos hallado otro número primo distinto. Entonces se demuestra
que los números primos son infinitos. Si incluimos este nuevo número primo en el
conjunto de números primos podemos construir el siguiente número:

ܴ ൌ ሺଵ ൉  ൉൉൉൉൉ ௡ ൉ ܳ  ö

y siguiendo el razonamiento anterior llegaremos a que  es otro número primo y así


queda demostrado la infinitud de los números primos.

Teorema Fundamental de la Aritmética


c
Cualquier número entero n mayor que 1 puede escribirse de manera única, salvo el
orden, como un producto de números primos.

Demostración:

Sea  un número entero mayor que 1. Probaremos, primero, que  puede escribirse
como un producto de números primos y, posteriormente, veremos que esa
descomposición es, salvo en el orden de los factores, única.

Descomposición.
@c Si a es primo, consideramos el número como un producto de un sólo factor y el
teorema ésta demostrado.

@c Si a no es primo, entonces es compuesto, y la proposición que dice: todo número


compuesto posee, al menos, un divisor primo, asegura que tendría, al menos, un
divisor primo.
Sea p1 el menor divisor primo de a. Entonces existirá un entero a1 tal que a = p1· a1
@c Si a1 es primo, entonces el teorema está demostrado.
@c Si a1 no es primo, será compuesto y aplicando de nuevo la proposición anterior
tendría, al menos, un divisor primo.

Sea p2 el menor divisor primo de a1, entonces existirá un entero a2 tal que

 Ê> 

Sustituyendo esta igualdad en la anterior, tendremos que



Repitiendo el proceso un número finito de veces, obtendremos



Con



Donde kí 1 es primo o es la unidad, entonces tomando kí 1 = pk, si es primo o akí 1 =
1, se sigue que

a = p1 · p2 · p3 ·«· pkí 1

a = p1 · p2 · p3 ·«· ppk

y  está escrito como un producto de factores primos.


Definición de Primalidad:

Definición: Diremos que el número entero p > 1 es un número primo si los únicos
divisores positivos que tiene son 1 y . Si un número entero no es primo, lo llamaremos
compuesto.

Nota. Obsérvese que de la definición de número primo se sigue que  es primo si, y sólo
si es imposible escribir  con  ‫ א‬Z y 1 < < .

Paradójicamente, la definición en apariencia tan sencilla e intuitiva, sin embargo da


lugar a algunas de las preguntas más difíciles que se ha planteado nuestra inteligencia,
muchas de las cuales aún restan sin resolver. Y es que lo más interesante de los números
primos es que, a priori es una parte de la matemática de la que cualquier persona puede
leer el capítulo introductorio. En cambio, por poco que uno se adentra, rápidamente se
da cuenta de que el problema no es tan sencillo como aparenta y que son necesarias
estructuras muy complejas y un conocimiento muy interdisciplinario para poder avanzar
en su estudio.

Algunas de las preguntas más importantes relativas a la posición de los números primos
dentro de los números naturales son:
¶c ÍCuántos números primos existen?
¶c ÍCómo saber si un número es primo o no?
¶c ÍHay funciones que definan los números primos de forma eficiente?
¶c ÍCómo están distribuidos los números primos dentro de los números naturales?
¶c ÍComo factorizar de forma eficiente un número natural cualquiera?

ãa dificultad de responder a las preguntas expuestas varía mucho de unas a otras. Por
ejemplo hace miles de años que se conoce la respuesta a la primera pregunta, y es que
existen una infinidad de demostraciones sencillas que nos dicen que existen un número
infinito de números primos.

Otras en cambio son tan complicadas que hoy en día aún no se conoce la respuesta,
como por ejemplo las relativas a la factorización de los números primos o a la
obtención de una función eficiente que los defina.
ãa cuestión que da razón a éste trabajo es la segunda pregunta, la de discernir entre si un
número dado de Z es primo o no.

Comprobar si un número es compuesto o primo, se puede tratar de varias maneras, una


muy simple es factorizarlo, así con solo mostrar los factores primos, convenceríamos
sin tener que mostrar una teoría compleja o argumentos auxiliares. Otra forma bastante
parecida seria encontrarle un divisor a dicho número, con esto lo demostraríamos de
manera sencilla a cualquier persona. Pero como persuadir a alguien si el numero es
primo, para esto debemos acudir a teorías auxiliares, que serán simples o complejas
según el nivel de fortaleza de nuestro algoritmo, con las cuales se demuestran
condiciones que debe cumplir un número para ser primo o no, de esta manera las
comprobaríamos y en caso de cumplirse o no, sabríamos que es primo o compuesto
algunas veces con seguridad y otras con una alta probabilidad.

ãa primera conclusión a la que llega una persona corriente cuando lee el enunciado del
problema que nos ocupa es que, efectivamente, existe un algoritmo, sencillo y fácil de
aplicar, para resolverlo.

TESTS DE PRåMALåDAD

ãa demanda del mercadode números primos grandes plantea el problema de encontrar


tales números de manera eficiente: por ejemplo, el sistema RSA solo sería factible si la
ofertade los primos y necesarios es abundante y barata. Para encontrar un tal primo
puede elegirse Ê, número impar arbitrario del tamaño requerido y comproba si es
primo. El problema que resta es: ÍCómo comprobar si Êes primo?

Definición: Un Test de Primalidad es un algoritmo que permite decidir si un número


natural Êes primo o compuesto.

Cualquier método de factorización (por ejemplo la división por los números, impares,
menores que û݊ ), constituye un test de primalidad.
l i i i

 l it t i i  l it  


   l t 
i 
      l it   t i i 
   i   ti      
tt
ili

C      l i ii   l   


i   i  l
 t i   li  lj  í i 
   i i i   

i  
 t t  l     tl   itti:     t 

   it      
t  i  
i  C  t   t   ll 
 
 lit      l i l i  tC it i  ili it 
 
lt i i l   
i 

  t    ll it 


 lt i i l   
i :

@c ht i it l  l t   tti t l t l
i  
 
t    
@c  ilíti l l l !  ti   
ilit lt  
l
ili   

h l   t i 
   li    t      l   it i 
  l
t i i l   
i  ltt
 t i itl!  
tt
 
ilíti 
c
 ti i  ll  l i  t it i 
ili í    
 l !i i   !i  l tt
ili
c

hi i i T i

ãiii 
t ttill! it t ii  t  ill il
 t  

h     t   
t  Ê Ê   l  t   t i  l iii 
 t tti

 it   i t t  iii  Ê  t  t    
i     i!l   "i 
encuentra un número que es divisor de Ê, en división entera, ese número es un factor de
Ê.

Es posible determinar un límite para los factores primos. Supón que (


) es el
-ésimo
primo, de modo que (1) = 2, (2) = 3, etc. Entonces el valor del último número primo
probado como un posible factor de Ê es (
) donde (
+ 1)2 > Ê; la igualdad aquí
querría decir que (
+ 1) es un factor. Aunque todo esto está muy bien, normalmente el
inconveniente de inspeccionar un Ê concreto para determinar el valor correcto de
es
más costoso que simplemente probar con el único candidato innecesario (
+ 1) que
estaría incluido en la tentativa con todos los (
) tales que  ሺ݅    û݊ .Puede la raíz
cuadrada de Ê ser entera, entonces es un factor y Ê es un cuadrado perfecto, pero no es
esta una manera buena de encontrarlos.

ãa división por tentativa garantiza encontrar un factor de Ê, puesto que comprueba todos
los factores primos posibles de Ê. Por tanto, si el algoritmo no encuentra ningún factor,
es una prueba de que Ê es primo.

Por ejemplo, queremos saber se 323 es un número primo. ãa raíz cuadrada de 323 es
323 ½ = 17,9722, por lo tanto, vamos a dividir 323 por 2, 3, 5, 7, 11 y 17. Si ninguno de
estos primos dividir 323, entonces él será primo:

El entero 323 no es primo porque es dividido por 17.

Si estuviéramos buscando por un primo titánico, con más de 10.000 dígitos decimales,
nunca podríamos dividirlo por todos los primos menores que su raíz cuadrada. Aun así,
aún en estos casos la división por tentativa es utilizada, solamente para hacer un rastreo
inicial. Se hace divisiones por algunos millones de primos pequeños y después se aplica
una prueba de primalidad.

En el caso de que Ê haya 25 dígitos o más, la división por tentativa usando primos
menores que su raíz cuadrada es impracticable. Si n tuviera 200 dígitos entonces la
división por tentativa es imposible.
Criba de Eratosthenes
c
Una vez conocida la existencia de infinitos números primos, se plantea un nuevo
problema cual es la forma en que dichos números están distribuidos en el conjunto de
los números naturales. Este problema es complicado y se conocen sólo resultados
parciales. Un primer método para resolver esta cuestión fue establecido en el 200 a.c.
por el astrónomo Eratostenes de Cirene, el cual ideo un algoritmo para calcular números
primos llamado Criba o Tamiz de Eratostenes y es consecuencia del siguiente teorema
cuya primera demostración rigurosa se debe a Fermat. _
c
Teorema. Si un número entero mayor que 1 no tiene divisores primos menores o iguales
que su raíz, entonces es primo.

Demostración:
Sea p entero estrictamente mayor que 1. Utilizamos el método de demostración por la
contrarrecíproca, es decir veremos que si p no es primo, entonces existe, al menos, un
divisor primo de p menor o igual que su raíz.

En efecto, si p no es primo, entonces es compuesto y (por la proposición: todo número


compuesto posee, al menos, un divisor primo.) tendrá, al menos, un divisor primo a.

Veamos que es menor o igual que la raíz de p. En efecto,

Ÿ  = , con 1<  < , y  ‫ א‬Z: 1< < 

Además, si suponemos que   , entonces

 Ÿ     Ÿ     Ÿ  ‫ ݌‬.

Así pues, hemos encontrado un divisor primo de  menor o igual que la raíz de .
ãa criba de Eratóstenes es un algoritmo que permite hallar todos los números primos
menores que un número natural dado.

…c Partimos de una lista de números que van de 2 hasta un determinado número.


…c Eliminamos de la lista los múltiplos de 2.
…c ãuego tomamos el primer número después del 2 que no fue eliminado y
eliminamos de la lista sus múltiplos, y así sucesivamente.
…c El proceso termina cuando el cuadrado del mayor número confirmado como
primo es menor que el número final de la lista.
…c ãos números que permanecen en la lista son los primos.

Ejemplo: deseamos calcular los números primos desde el número dos hasta 120.
Aplicando los pasos anteriores obtenemos la lista de los números primos, la cual
aparece en la parte derecha del siguiente cuadro.

Para este algoritmo necesitamos demasiado tiempo y espacio para realizar el algoritmo
con enteros suficientemente grandes. Aún así, este método tan antiguo casi como la
noción de primalidad, es la base para estudios realizados sobre la estimación de la
cantidad (nos referimos a la proporción en relación a los enteros y a su colocación
dentro de ellos) de números primos que existen.
Además es interesante ya que caracteriza a los primos de forma indirecta, sin recurrir a
la definición. Para él, los números primos son los que restan en la tabla sin ser
eliminados y observemos que para su construcción no necesitamos conocer, a priori,
ninguna propiedad sobre los números primos.
Como ya hemos dicho, todos los resultados de éste trabajo se basan en caracterizaciones
de los números primos que resultan ser ligeramente mejores que su definición para
atacar el problema de la primalidad.

Pequeño teorema de Fermat:

Fermat Alrededor de 1636, Pierre de Fermat enunció el teorema. Aparece en una de sus
cartas a su confidente Frénicle de Bessy, fechada el 18 de octubre de 1640, con el
siguiente texto:Todo número  no divisible por un primo deja residuo 1 al elevarse a
la potencia y dividirse entre .

Si a es un número natural cualquiera, por ejemplo 9 y p un número primo que no es


divisor de a, por ejemplo 5; siempre se cumple que p, es en este caso 5, es divisor
exacto de a p-1 -1, en nuestro caso 95 - 1 - 1.

En efecto 94 - 1 = 6561 - 1 = 6560 que es divisible por 5.

Esta brillante joya numérica se conoce como el "pequeño teorema de Fermat". Y, fue
demostrado por Euler cuando tenía 29 años. En términos de congruencias, esto se
escribe así:

 ିଵ  ‫ ؠ‬öሺ݉‫݌݀݋‬

Otra forma de presentar este teorema es multiplicando por :


   ‫ ؠ‬ሺ݉‫݌݀݋‬
El método en cuestión es el llamado test de primalidad de Fermat. Dicho test utiliza el
pequeño teorema de Fermat para descartar que cierto número sea primo o para alcanzar
cierta certeza de que un número es primo, según el caso.

Comencemos recordando el pequeño teorema de Fermat (una versión equivalente al


original):

Si  es un número primo, entonces para todo menor que , que sea primo relativo con
el propio  se cumple que:


 ିଵ  ‫ ؠ‬öሺ݉‫݌݀݋‬

Es decir, si  es primo entonces  ିଵ es congruente con 1 módulo . Esto significa que
si nosotros tenemos un número  que sabemos que es primo y tomamos un número
cualquiera  que no tenga ningún divisor común con , al dividir el resultado de la
operación  ିଵ entre el resto es 1 (o equivalentemente: al dividir  ିଵ െ öentre el
resto es 0).

Vamos con el primer uso del teorema: si tomamos un número  y otro  primo relativo
con él y el resto de dividir  ିଵ entre  no es 1, entonces el número  es compuesto. Es
sencillo darse cuenta de esto simplemente tomando el contra recíproco del teorema: si la
congruencia no se cumple, entonces el número Ê no es primo, por lo que necesariamente
debe ser compuesto.

El segundo uso que se le puede dar a este teorema es el que más nos interesa.
åmaginemos que tomamos un número, por ejemplo  = 11, que en principio no sabemos
si es primo o compuesto. Para aplicar el teorema debemos tomar un número  primo
relativo con 11. Sea, por ejemplo.  = 4 Tenemos que:

 ିଵ  ൌ  ଵଵିଵ ൌ ö

Si dividimos este número entre 11 el resto es 1. ÍNos dice algo esto? Pues no mucho:
simplemente que no podemos descartar que 11 sea primo. Si seguimos probando con
todos los primos relativo con 11 menores que el propio 11 obtenemos siempre resto 1 al
realizar las operaciones anteriores. Al pasar con todos, Ípodemos asegurar algo? Pues
por desgracia tampoco. ãa razón es muy sencilla: todo número primo  cumple que para
cualquier  primo relativo con él el resto de dividir  ିଵ entre  es 1 (es lo que dice el
pequeño teorema de Fermat), pero también hay número compuesto que tienen la misma
propiedad. Por ello el hecho de que un número cualquiera pase el test de Fermat no nos
asegura que el propio número sea primo.

Un número que pase el test de Fermat para un cierto  se denomina pseudoprimo en


base . Por tanto, en el caso anterior al probar con a= 4 tendríamos que 11 es un número
pseudoprimo en base 4. ãa denominación pseudoprimo se debe a que el número cumple
una propiedad que también cumplen todos los números primos, pero no podemos
asegurar que él también lo sea. De esta forma un número n es llamado un pseudoprimo
de Fermat si es pseudoprimo a toda base 0 <  < Ê.

Pero continuando con la prueba hemos dicho que 11 pasa el test de Fermat para
cualquier  menor que 11 y primo relativo con él. Aunque se ha comentado que eso no
nos asegura nada, sabíamos de antemano que 11 es primo. Podría ser que los únicos
números que pasan el test de Fermat en cualquier base fueran los números primos, pero
no es así. Existen números compuestos que pasan el test de Fermat para cierta base a,
esos números se le conoce como pseudoprimo de base con el cual pasan el test.

Por ejemplo:
341 = 11 · 31 es pseudoprimo a 2
91 = 7 · 13 es pseudoprimo a 3
217 = 7 · 31 es pseudoprimo a 5
25 = 5 · 5 es pseudoprimo a 7

ãos números naturales que pasan el test de Fermat en cualquier base pero resultan ser
compuesto son los denominados números de Carmichael (también se les llama
pseudoprimos absolutos). Es decir, son números p para los cuales sea cual sea a menor
que p y primo relativo con él se verifica qué á ିଵ
‫ ؠ‬öሺ‘†’, pero no son primos.

El primer número de Carmichael es el 561. Es decir, á െ öes divisible por 561 para
cualquier a menor que 561y primo relativo con él, pero no es primo. De hecho.
561=3·11·17.
El método de factorización de Fermat

ãa cuestión es factorizar un cierto número Ê. ãa idea de Fermat es la siguiente:

Si Ê es igual a la diferencia de dos cuadrados, digamos ݊ ൌ  ‫  ݔ‬െ  ‫  ݕ‬, entonces Ê puede


factorizarse de forma muy sencilla de forma evidente:

݊ ൌ ሺ‫ ݕ  ݔ‬ሺ‫ ݔ‬െ ‫ ݕ‬Ǥ

Como ‫  ݔ‬debe ser mayor que Êse tiene que  debe ser mayor que û݊ . A partir de esto
ya podemos adentrarnos en el método de factorización de Fermat:

Dado un número entero positivo Ê que queremos factorizar tomamos un entero positivo
 mayor que û݊ (podemos calcular una aproximación de esa raíz cuadrada a ojo o con
el método normal y después elegir ). Calculamos ‫  ݔ‬y le restamos Ê. Si obtenemos un
cuadrado hemos terminado. Si no es así tomamos  , calculamosሺ‫  ݔ‬ö , restamos Ê
y si hemos obtenido un cuadrado se acaba. Procedemos de la misma forma hasta
encontrar un cuadrado.

Ejemplos de aplicación del método:

Vamos a factorizar el número13837. Su raíz cuadrada está entre 117 y 118. Tomamos 
= 118. Pero 1182 ± 13837 = 87, que no es un cuadrado. Tomamos ahora  =119. Ahora
1192 ± 13837 = 324 = 18 2. Por tanto despejando n = 13837 de esta expresión tenemos
su factorización:

13837 = 119 2 ± 182 = (119 + 18)(119 -18) =137 ·101

Como podemos ver el método está muy bien si la diferencia entre los factores del
número no es muy grande pero no es demasiado eficiente si los dos factores están muy
alejados el uno del otro, ya que en ese caso la cantidad de cálculos que deberíamos
realizar sería enorme.
Primos de Mersenne

Definición: Un número de Mersenne es un número  de la forma,Þ ൌ  


െ ö,
cuando p es primo y también lo es,  se denomina primo de Mersenne.

ãos primos de Mersenne tienen un origen curioso y están relacionados con los
llamados números perfectos que ya fueron estudiados en la antigua Grecia.

Hasta 1536 se pensó que los números de la forma 2n-1 eran todos primos, pero ese año
Hudalricus Regius, demostró que 211 - 1 = 2047 era el producto de 23 y 89. Sin
embargo, muchos (se supone que infinitos) números primos cumplen esa condición. A
los números primos que cumplen esa condición se les llama números primos de
Mersenne A pesar de todo, los números de Mersenne han proporcionado
tradicionalmente un método de cálculo de números primos gigantescos.

Existen pruebas especiales de primalidad y búsqueda de factores que los hacen


matemáticamente atractivos. Dos resultados importantes sobre estos números son: la
forma especial que tienen sus divisores y un test rápido (ãucas-ãehmer) para averiguar
si son primos o no.

Ejemplo: M19 = 219 - 1 = 524287 es un primo de Mersenne (encontrado por Cataldi en


1588).

El descubrimiento de los números de Mersenn se debe al grupo GåMPS, concretamente


a Odd Magnar Strindmo, persona que lleva colaborando con GåMPS desde 1996. El
proyecto Great ånternet Mersenne Prime Search (GåMPS) ha anunciado el
descubrimiento, no de uno, sino de dos números primos de Mersenne. El método
empleado es el de la computación distribuida en la que muchos voluntarios permiten el
uso de CPU de sus máquinas. No es la primera vez que se descubre un número primo de
este tipo con este método por esta misma organización. El que ahora hace el número 46
es el número primo más grande conocido hasta la fecha. Además se ha confirmado el
descubrimiento del primo de Mersenne número 47. En concreto es este número:
ǤǤ଼ଵ
െ ö. El número en cuestión tiene la friolera de 12837064 dígitos.
ãa definición de estos números permite saber que el n-ésimo número de Mersenne es
una cadena de n unos cuando se escribe en binario (base 2). Por ejemplo, M7 = 27 - 1 =
127 = 11111112 es un número de Mersenne. Esta p ropiedad permite implementar
cálculos con números de Mersenne en los computadores de manera más sencilla. No
todos los primos son primos de Mersenne, pero como éstos se pueden implementar
fácilmente en un programa de ordenador los 8 mayores primos conocidos son de
Mersenne.

Método de factorización de Euler:

ãa idea de que dos representaciones distintas de un entero positivo dieran lugar a una
factorización fue aparentemente planteada por primera vez por Marin Mersenne. Sin
embargo, no fue hasta Euler, cien años después, que su uso empezara a extenderse. Su
más celebrado uso del método que hoy lleva su nombre fue el de factorizar el número O
= 1000009, que, al parecer, se pensaba que era primo.

Este método de factorización basado en la representación de un entero positivo O como


la suma de dos cuadrados de dos maneras distintas:

O = 2 + 2 = 2 + 2

Aunque la factorización algebraica de números binomiales no sirve para factorizar


sumas de dos cuadrados (en efecto un número que se puede expresar de una forma
como suma de dos cuadrados es un número primo) si se pueden hallar dos
representaciones distintas de un número como suma de dos cuadrados se sigue de ahí
una factorización:

Partiendo de

O = 2 + 2 = 2 + 2

se resta 2 + 2 a ambos lados de la igualdad para crear una diferencia de dos cuadrados:

m о 
=  о 
y de ahí se sigue que:

ሺ െ ܿ ൉ ሺ  ܿ ൌ  ሺ݀ െ ܾ ൉  ሺ݀  ܾ

Supóngase sin pérdida de generalidad que  y  son ambos pares o bien ambos impares,
de forma que su diferencia es par. Ahora se define una constante  igual al máximo
común divisor de ( ) y ( ) de forma que:

Am о ) =  y A о ) = ( con  A() = 1

de forma que, tras sustituir en la expresión anterior:

 ൉ ሺ  ܿ  ൌ ݉ ൉ ሺ݀  ܾ 

Como y  son primos entre sí, se sigue que ( + ) es divisible por , lo que nos da:

Am + ) =  y;

A + ) = 

ãa factorización del número original Ê se puede mostrar que es igual a:

݇  ݊ 
ܰ ൌ ቈ൬      ൉ ሺ݉     
Ejemplo:

c
Usaremos N = 1000009, como mencionamos anteriormente, se pensaba que era primo,
Euler con el uso de este método comprobó que no era primo.

Como:

N=1000009 = 1000 2 + 32 = 9722 + 2352

se tiene por las fórmulas anteriores:

a = 1000 a - c = 28 k=4

b=3 a + c = 1972 l = 7

c = 972 d - b = 232 m = 58

d = 235 d + b = 238 n = 34

Así,

   
ö ൌ ቈ൬   ൬   ൉ ሺ   

=ሺ 
 ö   ൉  ሺ   
= (4+289) · (3364+49)
= 293·3413

El método de factorización de Euler es más efectivo que el de Fermat para números


naturales cuyos factores no sean próximos entre sí y es potencialmente mucho más
eficiente que la división por tentativa si se pueden hallar representaciones de números
como suma de cuadrados de forma razonablemente fácil. El desarrollo de Euler permitió
una factorización mucho más eficiente, y, para los años 1910, el desarrollo de una tabla
de factores de números hasta 10 millones.

2 c
c c  c 

Es un test de primalidad para los números de Proth inventado por François Proth
alrededor de 1878.

Un número de Proth es primo, es decir, un número de la forma N=k·2n+1, para k impar,


n un número entero positivo, y 2n >k.

Números primos de Proth satisfacen el teorema de Proth, es decir, un número N de esta


forma es primo si y solo si existe un número  tal que  ሺேିଵ  es congruente con -1
módulo N entonces Ê es un número primo llamado primo de Proth. Este test funciona en
la práctica porque si Ê es primo, el 50% de los valores de a cumplen con la condición
indicada arriba.

Si a es un número primo y p no es un residuo cuadrático módulo a entonces a tampoco


es residuo cuadrático módulo p y se cumple la condición del teorema. En la práctica se
usan diferentes números primos pequeños para la variable a y se calcula el símbolo de
Jacobi hasta que:

൬  ൌ  െö

‫݌‬

lo cual es mucho más rápido que la exponenciación modular para hallar el valor de a, ya
que en este caso, luego de calcular p mod a, se deben realizar unos pocos cálculos
usando números menores que a, mientras que con la congruencia se deben realizar más
de (ln p/ln 2) multiplicaciones modulares modulo p, lo que es muy costoso en tiempo de
cálculo.

Ejemplo: sea N el número de Proth ya que N=13 = 3· 22 + 1.

Con el uso del teorema tenemos que, tomando a=5, se tiene:

 ሺଵିଵ ൌ   ‫  ؠ‬െöሺ݉‫݀݋‬ö


Es decir para n = 13, 56 + 1 = 15626 es divisible por 13, por lo que 13 es primo de
proth.

A continuación se muestran ejemplos de uso del teorema de Proth:

@c Para n = 3, 21 + 1 = 3 es divisible por 3, por lo que 3 es primo.


@c Para n = 5, 32 + 1 = 10 es divisible por 5, por lo que 5 es primo.
@c Para n = 9, que no es primo, no existe valor de a tal que a4 + 1 sea divisible por
9.

ãos primeros primos de Proth son: 3, 5, 13, 17, 41, 97, 113, 193, 241, 257, 353, 449,
577, 641, 673, 769, 929, 1153,«  julio de  ( el mayor primo de Proth conocido es
1 · 13 18586
+ 1( hallado por el proyecto Seventeen or Bust. Posee 318 dígitos
decimales y es el mayor primo conocido que no es de Mersenne.

Test de Pépin

En matemáticas, el test de Pépin (por el matemático francés P. Pépin) es un test de


primalidad que se puede emplear para determinar si un número de Fermat es primo. Es
una variante del test de Proth.

Sea ‫ܨ‬௡ ൌ  
 öel n-ésimo número de Fermat. El test de Pépin establece que para
cada n > 0, ÷Ê es primo si y sólo si ሺி ିଵ  ‫  ؠ‬െö (mod ÷Ê

Ejemplo: queremos comprobar si ÷ es primo, como ÷ 


 ö17. Usando el test
de Pépin tenemos, ሺଵ଻ିଵ ൌ ଼ = 6561

ãa expresión ሺி ିଵ se puede evaluar módulo ÷Ê elevándolo repetidamente al


cuadrado. Esto permite que el test tenga un tiempo de ejecución polinómico, es decir, en
principio se trata de un algoritmo rápido. Sin embargo, los números de Fermat crecen
tan rápidamente que sólo se pueden evaluar unos pocos en un intervalo de tiempo
razonable.

También pueden emplearse otras bases en lugar de 3, por ejemplo, 5, 6, 7 ó 10.


Test de Wilson:

Teorema de Wilson fue una de las primeras caracterizaciones completas de los números
primos, de forma que no era necesario conocer la factorización del número en cuestión
para obtener un resultado concreto sobre su primalidad.

Test de Wilson: (n 1)! Ł 1 (mod n) si y solo si n es primo.

Ejemplo: sea n=7, entonces n-1 = 6 es primo dado que (n-1)! = (6)! ‫ ؠ‬-1 (mod 7)
(El inconveniente es que el cómputo del factorial es un problema computacionalmente
más complejo que la factorización).

Teorema de Wolstenholme

El teorema de Wolstenholme afirma que para un número primo  > 3, la congruencia

‫݌‬െö
൬   ‫ ؠ‬ö݉‫ ݌݀݋‬
‫݌‬െö

es verdadera, donde la parte izquierda de la igualdad es un coeficiente binomial.


El teorema fue demostrado por Joseph Wolstenholme en 1862; Charles Babbage había
mostrado la equivalencia para 2 en 1819.

No se sabe si un número compuesto cumple el teorema de Wolstenholme. ãos números


que cumplen con la congruencia son llamados números de Wolstenholme.
Este teorema puede ser descompuesto en otros dos resultados:

ሺ‫ ݌‬െ ö ൬ö       
ö ö ö
 ‫݌݀݋݉ ؠ‬
 ‫݌‬െö
y

ሺ‫ ݌‬െ ö ö       ‫݌݀݋݉ ؠ‬Ǥ


ଵ ଵ ଵ

  ሺିଵ
Test de Lucas:

El teorema pequeño de Fermat dice que si p es primo, entonces se cumple que


‫׊‬áԖno multiplo de ’ ՜ á ିଵ
‫ ؠ‬ö(mod p). Sabemos ya que el recíproco del teorema
no es cierto, e incluso le hemos dado un nombre a los números enteros que no cumplen
la propiedad reciproca para todos los enteros inferiores que ellos, los números de
Carmichel.
ãucas, en 1876 formuló un recíproco del teorema de Fermat, bajo ciertas condiciones.

Proposición: Test de ãucas 1:

Sea N > 1, supongamos que existe un entero n > 1 tal que:

୒ିଵ ‫ ؠ‬ö(mod N)

୫ ‫ ء‬ö (mod N) para todo m = 1, 2, . . . ,N 2

Entonces N es primo.

Demostración:
De la definición de la función de Euler(Si a y p son dos enteros tales que mcd(a, p)=1,
entonces áĭ ሺ୬ ‫ؠ‬1 (mod p)) es suficiente ver que ĭ (N) = N 1. Para ello simplemente
necesitamos obtener un número entero t tal que: 1  t < N, Mcd (t, N) = 1 tal que el
orden de t módulo N sea N 1. Estas son precisamente la hipótesis expresada en el
enunciado.

El principal problema de éste test es que requiere de N-2 exponenciaciones modulares


del supuesto número t, operación demasiado costosa, ya que nos proporcionara un
coste computacional exponencial.

En 1891, ãucas enunció este otro test:

Proposición. Test de ãucas 2:


Sea N > 1. Supongamos que existe un entero a > 1 tal que:

á୒ିଵ ‫ ؠ‬ö (mod N)

á୫ ‫ ء‬ö (mod N) para todo m < N tal que m | (N 1)

Entonces N es primo.

El principal problema asociado a éste test es que es necesario conocer la factorización


en números primos de N 1 para poder realizarlo, problema, que como ya sabemos, se
conjetura más complejo que el de la primalidad. Solo puede ser utilizado, entonces, en
el caso de tener una caracterización realmente efectiva de los factores que componen N-
1 como puede ser en los primos del tipo, ൌ ୬  ö.

El comentario anterior, a propósito del test de ãucas, muestra que, para números
particulares, pueden ser factibles tests deterministas de primalidad eficientes y fáciles de
implementar.

Ejemplo, tómese N = 71. Entonces, N 1 = 70 = (2)(5)(7). Tómese ahora n = 11. En


primer lugar:

öö ଻  ‫ ؠ‬öሺ݉‫ ݀݋‬ö

Esto nos demuestra que el orden multiplicativo de 11 mod 71 es 70, porque algún factor
de 70 aún podr a funcionar arriba. Verificamos entonces 70 dividido por sus factores
primos:
 öö   ‫ ء  ؠ‬öሺ݉‫ ݀݋‬ö


ööଵ  ‫ ء  ؠ‬öሺ݉‫ ݀݋‬ö


ööଵ ‫ ء  ؠ‬öሺ݉‫ ݀݋‬ö

Entonces, el orden multiplicativo de 11 mod 71 es 70 y de esta manera, 71 es primo.


Test de Pocklington

Enunció la siguiente proposición en 1914:

Proposición Sea N 1 = 1  R dónde q es un número primo, w 1 y q no divide a R.


Supongamos además que existe un entero a > 1 tal que:

á୒ିଵ  ‫ ؠ‬ö (mod N)

୒ିଵ
…† ቆá ୯ െ ö ቇ ൌ ö

Entonces todos los factores primos de N son de la forma m · qn+1 con m w 1.

Demostración:
Sea p un factor primo de N y llamemos  al orden de a módulo p. Por consiguiente
sabemos que  divide a p 1. Por la segunda condición expuesta en el enunciado de la

 ‫ ؠ‬öሺ‘†’ y por
୒ିଵ



proposición e no puede dividir ya que en caso contrario á 

lo tanto 1୬ ള‡ y consiguientemente, como queríamos ver, 1୬ ളሺ1 െ ö.

Esta proposición puede ser interpretada como un test de primalidad en el siguiente


sentido:

Proposición: Test de Pocklington 1.

En las condiciones de la proposición anterior, si todo factor primo ’ ൌ  ൉  1୬   ö


û entonces N es primo.

Pocklington, incluso realizó un refinamiento de su caracterización sobre los factores


primos de N í 1 como sigue:
Proposición: Sea N 1 = FR, dónde mcd(F,R) = 1 y la factorización de F es conocida.
Si para todo primo q que divida a F existe un entero a = a (q) > 1 tal que:

á୒ିଵ  ‫ ؠ‬ö

୒ିଵ
…† ቆá ୯ െ ö ቇ ൌ ö

entonces todos los factores primos de N son de la forma m·F +1, con m w 1.

ão que nos lleva a poder formular un test de primalidad análogo al enunciado del test de
Pocklington 1.

A continuación Pocklington propuso otro test de primalidad, refinando los anteriores,


imponiendo ciertas condiciones sobre R, la parte no factorizada de N:

Proposición: Test de Pocklington 2:


Sea N 1 = F·R dónde mcd (F,R) = 1 y la factorización de F es conocida. Supongamos
que B es tal que FB >û y que R no tiene más factores primos que los de B, entonces
si:

1.c Para cada primo q que divida a F existe un entero a = a(q) > 1 tal que

á୒ିଵ  ‫ ؠ‬ö (mod N) y …† ൬á െ ö  ൌ ö .





2.c Existe un entero b > 1 tal que \୒ିଵ  ‫ ؠ‬ö (mod N) y …†ሺ\ െ ö  ൌ ö.

Entonces N es primo.

Ejemplo1: prueba por Pocklington para el número N=11. Se supone conocida la


factorización parcial N-1=2·5 y también conocido el hecho de que ÷=5 es un número
primo, por tanto q es único e igual a ÷.
Puesto que ଵ
 ‫ ؠ‬ö (mod 11), y

…†  െ ö öö ൌ ö, podemos concluir que n es primo.




Ejemplo 2: prueba por Pocklington para el número O = 11351, O-1 = 2 · 52 · 227

Escogemos = 227 · 5 2, con lo que significa  =2. Ahora está claro que mcd ( ) = 1
y > ûܰ

Encontramos un  para cada factor primode . Esto es tomando


= 2.

 ேିଵ  ‫ ؠ‬ ଵଵ  ‫ ؠ‬öሺ݉‫݀݋‬ööö


݉ܿ݀൫ ሺேିଵ െ ö ܰ
ൌ ݉ܿ݀ ሺ ൉൉଻
െ ö ööö  ൌ ö
Así cumple las condiciones necesarias. Ahora escogemos  = 7

 ேିଵ  ‫  ؠ‬ଵଵ  ‫ ؠ‬öሺ݉‫݀݋‬ööö
݉ܿ݀൫ ሺேିଵ െ ö ܰ
ൌ ݉ܿ݀ ሺ ൉ െ ö ööö  ൌ ö

sí que funciona para m( por lo tanto N es primo.

El algoritmo es sencillo. Se limita a realizar una serie de cálculos con aritmética


modular y comprobar el resultado. ãa contrapartida es que se necesita una factorización
parcial de n.

Test de Lucas-Lehmer:

En 1967, Brillhart, ãehmer y Selfridge hicieron más flexibles y potentes los test de las
proposiciones 1 y 2 de ãucas. Enunciaron el siguiente test:

ãa teoría para este test fue iniciada por ãucas en 1876 y convertida en algoritmo en
1930 por ãehmer.
ãos números de Mersenne son los que tienen la forma: 2Ê -1.

Para que un número de Mersenne sea primo, el exponente Ê debe ser primo. ão
contrario no es cierto, para la mayoría de exponentes primos, el número de Mersenne
correspondiente no es primo. En los últimos años los primos de Mersenne se han
buscado utilizando el test de ãucas-ãehmer:

ãos números primos más grandes que se han encontrado son primos de Mersenne, esto
es debido a dos motivos:

1.- En notación binaria estos números se representan con una hilera de unos tan larga
como el exponente Ê, es decir, tienen una estructura muy simple.
2.- El test de ãucas-ãehmer permite certificar rápidamente la primalidad de estos
números.

El test de ãucas-ãehmer dice que para todo  primo impar (es decir, exceptuando el 2),
el número de Mersenne 2 -1 es primo si y solo si el resto de dividir S-1 entre 2 -1 es 0,
donde S 1 = 4 y SÊ+1 es el resultado de la congruencia (SÊ2 - 2) mod (2-1)

Por ejemplo, sea p = 5. El número de Mersenne M5 es: 25 -1 = 31

ãa serie correspondiente es: S1 = 4, S2 = 14, S 3 = 194 (mod 31) = 8, S4 = 62, resto de


dividir 62 entre 31 = 0, luego 31 es primo. M5 es primo.

ãos tests anteriores tienen una complejidad similar a la de los tests probabilísticos (en
concreto O(log3n)) y han permitido obtener los records, de primos conocidos. Así, el
primo número 38 de Mersenne.
Teorema. Para p un primo impar, el número de Mersenne — 1 es primo si y solo si —
1 divide a Sp—1 donde S1 = 4 y Sn+1 = S2n — 2.

Solovay-Strassen(SS):
Otro test muy conocido y utilizado en criptografía es el test de Solovay-Strassen (SS).
El test de primalidad de Solovay-Strassen, que fue desarrollado por Robert M. Solovay
y Volker Strassen, es un algoritmo aleatorio para determinar si un número es un número
compuesto o es un número primo probable.
Este test está basado en el criterio de Euler que establece que si n es un número primo

impar, entonces áሺ୬ିଵ ‫   ؠ‬୬  ሺ‘† para todos los enteros que satisfacen que el
!

mcd(a, n)=1, donde୬  representa el símbolo de Jacobi definido por  ୬ ൌ  ς


ଵ ൬ 
"
! ! !

donde cada pj es un primo distinto, ‡ ‫א‬N y ൬  es el símbolo de ãegendre definido por


!

‫ۓ‬
݅‫ܿ݀݅ݒ݅݀݌‬
ܿ ۖ ö݅ܿ‫݋ݑ݀݅ݎ‬
൬  ൌ ܿ‫݋ܿ݅ݐݎ݀ݑ‬ 
‫݌‬ ‫۔‬
ۖ ݉‫݌݋ݑ݀݋‬
‫ە‬െö݀‫݋݀݋݉݋ݎݐ݋‬Ǥ

Se puede calcular si se cumple o no la congruencia

áሺ୬ିଵ  ‫    ؠ‬ሺ‘†

á

para varios valores de a. Si es un número primo, entonces la congruencia es verdad para


todo a. Así, si se eligen valores de a aleatoriamente y se prueba la congruencia,
entonces, tan pronto como se encuentre un a que no cumple la congruencia, se sabe que
no es primero

ãos valores de a que cumplen el criterio de Euler se denominan verificadores de Euler


para la primalidad de n y los que no lo cumplen se denominan falsadores de Euler para
la primalidad de n.

Veamos a qué clase de complejidad pertenece:


Para toda entrada es polinomial en tiempo. Si el valor de entrada es primo entonces
siempre devuelve primo.
Si el valor de entrada es compuesto la probabilidad de darlo por primo es menor que
1/2k, donde k es el número de repeticiones.
Con lo cual concluimos que este algoritmo funciona para decidir si un número es
compuesto o no y es probable que puede dar por primos, números que en realidad son
compuestos.
El mayor problema de este algoritmo radica en la dificultad para implementar el cálculo
del símbolo de ãegendre.

Algoritmo Test de Solovay-Strassen.


Este es el primer ejemplo que se propuso de algoritmo probabilista y se puede
considerar a Solovay y Strassen como los padres de dichos algoritmos.

Ejemplo: supongamos que deseamos determinar si Ê = 221 es primo. Escribimos


(ʗ1)/2=110. Seleccionamos aleatoriamente un a < n, en este caso a = 47. Calculamos

@c (ʗ1)/2 mod Ê = 47110 mod 221 = —1 mod 221.


# ଻
  mod Ê =   mod 221 = —1 mod 221.
௡ ଵ
@c

Esto da que, o bien 221 es primo, o 47 es un falseador de Euler para 221. Tratamos otro
al azar una, eligiendo esta vez a = 2

@c (ʗ1)/2 mod Ê = 2110 mod 221 = 30 mod 221


# 
 mod Ê =   mod 221 = —1 mod 221.
௡ ଵ
@c

Por lo tanto 2 es un verificador de Euler para la descomposición de 221, y 47 era en


realidad un mentiroso Euler.

c
Método de factorización rho de Pollard.
c
Un es algoritmo de factorización para determinar números primos, conocido como
método de factorización de Pollard Monte Carlo.

En el método de factorización por ensayo y error, probamos con todos los números
entre 2 y ûܰ para hallar un factor de O. Si no lo hallamos, Oes primo.
En vez de hacer estos § ûܰ pasos, vamos a escoger una lista aleatoria de números, más
pequeña que ûܰ , y probar con ellos.

A menudo se construyen sucesiones seudo-aleatorias‫ݔ  ݔ‬ଵ  ‫  ݔ‬usando una iteración


de la forma ‫ ݔ‬ଵ ൌ ݂ሺ‫(  ݔ‬mod O), con 0 = random(0, O—1). Entonces ሼ‫ݔ  ݔ‬ଵ   ሽ  ‫ك‬
ܼே . Por lo tanto los 
ms se empiezan a repetir en algún momento.

ãa idea es esta: Supongamos que ya calculamos la sucesión ‫ݔ  ݔ‬ଵ  ‫   ݔ‬y que es


³suficientemente aleatoria´. Si es un factor primo de Oy si

‫ݔ  ؠ  ݔ‬௝ሺ݉‫ ݌݀݋‬
‫ݔ  ء  ݔ‬௝ ሺ݉‫ܰ݀݋‬
„

c
c
Test es el Miller-Rabin

ãa idea del test se la debemos a Miller y la posterior mejora a Rabin (que transformó el
algoritmo en probabilista usando las ideas de Solovay y Strassen).

ãa idea detrás del algoritmo es la siguiente. Sabemos que si n es primo, Zn es un cuerpo


y por lo tanto x2 —1 tiene exactamente dos raíces, 1 y í 1. Sin embargo esto no es cierto
cuando n es compuesto, es más, se puede comprobar que podrá tomar tantos valores
distintos como dos elevado al número de factores primos que posea.

Ahora bien, por el Teorema pequeño de Fermat sabemos que á୬ିଵ ‫ ؠ‬1 mod n, con lo

cual á  es una raíz cuadrada de la unidad y por lo tanto sólo puede ser 1 o —1.
Repitiendo el proceso mientras tengamos factores pares, obtenemos una serie de valores
que puede ser o bien {1, 1,. . ., 1} o bien {1, 1,. . ., —1}. A los números con esta
propiedad los podemos llamar testigos y se puede probar que más de la mitad de los
enteros entre 1 y n cumplen dicha propiedad. Con lo cual probando con a = 1, 2,. . ., n/2
averiguar—amos si efectivamente n es primo o compuesto.

A partir de esta idea surge el siguiente algoritmo determinista que certifica primalidad
Test determinista de Miller:
Sea n un entero positivo, tenemos s tal que 1< s < n, si n-1 = 2s·t, con s w 0 y t un
entero positivo impar. Decimos que n pasa el test de Miller en la base b si bt ‫ ؠ‬ö‘†
o bien que b2j·t ‫ ؠ‬െö‘† para algún j, con      െ ö

ãa correctitud de este algoritmo está garantizada por la caracterización dada


anteriormente de los números primos, salvo por el pequeño detalle: sólo comprobamos
los primeros 2 log2 (n) números. Esto se debe a que este algoritmo fue diseñado
suponiendo cierta la siguiente conjetura (la cual nos permite acotar la distancia entre
números primos y nos da cierta una idea de su distribución):

Conjetura: (Hipótesis de Riemann).

…‘ ‫{ \ א‬1} función zeta de Riemann.



Definimos ȗ(s) =$ஶ
୬ ଵ ୬౩

‫{ \ א ׊‬1,-2,-4,«,-2k} tales que ȗ(s) =0 Ÿ  " ሺ ൌ  ö


Volviendo al algoritmo de Miller, la complejidad viene determinada por el bucle
anidado. En el peor caso realizamos en el bucle externo 2 log2 (n) operaciones y en cada
una de ellas O(log2 (n)) pues s es del orden O(log(n)) y mediante cuadratura iterada se
tarda del orden O(log n) en realizar cada potencia. Obtenemos por tanto un algoritmo de
orden O(log4(n)).

Ahora bien, supongamos que no nos creemos la hipótesis de Riemann, Rabin realizó
una pequeña modificación (usando las ideas de Solovay y Strassen como indicamos
anteriormente) en el algoritmo para convertirlo en probabilista.

Test es el Miller-Rabin (también conocido como test fuerte del pseudoprimo).


Como ya sabemos, el recíproco del teorema de Fermat no siempre es cierto. De éste
modo se pueden definir los pseudoprimos débiles, como aquellos que fallan para una
base en concreto en el recíproco del teorema de Fermat.
De forma similar, pero con otra congruencia, podemos definir el concepto de
pseudoprimo fuerte.
Test de primalidad que proporciona un algoritmo eficiente probabilístico para
determinar si un número dado es primo. Se basa en las propiedades de pseudoprimos
fuerte.

El test de (MR) es un test de primalidad, es decir, un algoritmo para determinar si un


número dado es primo, similar al test de primalidad de Fermat. Está basado en el
siguiente hecho: Si tenemos un número primo n y n — 1 = %
& donde r es impar, se
cumple que ‫׊‬á ‫†… א‬ሺá  ൌ ö, entonces o bien á ‫ ؠ‬öሺ‘† o bien
' ‫ א‬ሾ  െ ö (á  ‫  ؠ‬െöሺ‘†Ǥ (Orden de complejidad O(k × log3 n)).

Supóngase que n > 1 es un número impar del cual queremos saber si es primo o no. Sea
m un valor impar tal que n — 1 = 2k m y a un entero escogido aleatoriamente entre 2 y

n — 2.

Cuando se cumple

  ‫  ؠ‬േö݉‫݊݀݋‬

o bien

‫ ؠ‬െö݉‫݊݀݋‬
)


para al menos un r entero entre 1 y k—1, se considera que n es un probable primo; en


caso contrario n no puede ser primo. Si n es un probable primo se escoge un nuevo
valor para a, y se itera nuevamente reduciendo el margen de error probable. Al utilizar
exponenciación binaria las operaciones necesarias se realizan muy rápidamente.

Se puede demostrar que un número compuesto es clasificado "probable primo" en una


iteración del algoritmo con una probabilidad inferior a 1/4; de hecho, en la práctica la
probabilidad es mucho menor.

El algoritmo es de orden O(k log2(n)) = O(log2(n)) como vimos anteriormente.


Un comentario acerca de la probabilidad de error en estos algoritmos. Realizar 50
iteraciones del algoritmo de Miller-Rabin es algo plausible de llevar a cabo y
tendríamos que la probabilidad de errar sería 1/450 = 1/2100 una probabilidad muy
inferior a la de que caiga un meteorito y destroce el laboratorio donde se está realizando
el experimento. Pero es que incluso realizando ³sólo´ 20 iteraciones tenemos que la
probabilidad de error es 1/240 que es inferior a la probabilidad de que se produzca un
error de hardware que produzca un error de cálculo y haga fallar al algoritmo. Teniendo
en cuenta estas afirmaciones se ve claramente que hay que tener muy mala suerte para
que uno de estos algoritmos falle en la práctica.

Ejemplo: Supongamos que queremos determinar si n=1 es primo. Escribimos n-1 =
como  · 55( de modo que tenemos s =  y d=55. Seleccionamos al azar a < n de 17.
Procedemos a calcular:

 ൉ௗ
@c  mod Ê = 174 55 mod 221 = 47  1, Ê — 1
 ൉ௗ
@c  mod Ê = 174110 mod 221 = 220 = Ê — 1.

hesde  о1 mod 


  
      mm
m m
m    m


 ൉ௗ
@c  mod Ê = 13755 mod 221 = 188  1, Ê — 1
 ൉ௗ
@c  mod Ê = 137110 mod 221 = 205  Ê — 1.

„m
   m     

  mm m  
  

Primalidad y Curvas Elípticas

El siguiente paso en el estudio de la primalidad consiste en sustituir los grupos cíclicos


o de Galois utilizados en anteriores certificados por otros grupos donde, tal vez, sea más
sencillo trabajar. Este es el caso de el grupo de puntos de una curva elíptica modulo n.
El proceso es el mismo que el utilizado para determinar la primalidad de un entero
cuando trabajábamos con grupos Z/(nZ)* y comprobábamos que existía un elemento de
orden n — 1 o que el cardinal era n — 1.
En éste caso utilizamos propiedades sobre el cardinal del grupo de puntos de una curva
elíptica módulo n cuando n es un número primo.
Debido al gran desarrollo que ha tenido el mundo de las curvas elípticas en los últimos
años, se disponen de bastantes propiedades y algoritmos relacionados con el propósito
que buscamos.

El algoritmo de Goldwasser-Kilian

åniciamos la discusión con el siguiente teorema:


Teorema: Sea N un entero primo con 6 y E una curva elíptica sobre Z/(NZ), junto con
un punto P en E. Sean además dos enteros m y s tales que s | m.

Para cada divisor primo q de s, anotamos   ൌ ሺ‫ݔ‬ǣ‫ ݕ‬ǣ‫  ݖ‬Asumimos que





mP = *+ y que ݉ܿ݀൫‫
ܰ ݖ‬ൌ ö‫ ׊‬Ǥ Entonces si p es un divisor de N, se cumple que:
# E(Z/ (pZ)) ‫ؠ‬0 ().

En las condiciones del teorema anterior podemos, entonces formular que:

Proposición Certificado de Goldwasser-Kilian:

  ûܰ  ö , entonces N es primo.



En las condiciones del teorema anterior, si 

Entonces, combinando el teorema y la proposición anterior, con el algoritmo de Schoof


(permite que uno calcule el número de puntos en curva elíptica sobre un campo finito)
que computa # E(Z/ (pZ)) en tiempo VሺሺŽ‘‰ ‫  ଼݌‬obtenemos el algoritmo de
Goldwasser-Kilian:

AãGORåTMO:
1. Escogemos una curva elíptica E sobre Z/(NZ), tal que el número de puntos m
(computados con el algoritmo de Schoof) satisfaga que m = 2q, con q un primo
probable(entero que ha pasado todos los pseudo test de primalidad).
2. Si (E, m) satisface las condiciones del teorema con s = m, entonces N es primo, en
caso contrario es compuesto.
3. ãa primalidad de q se prueba de la misma forma.
4. Final.
c
El algoritmo ECPP

El algoritmo anterior, sucesivamente vamos creando curvas y computamos su cardinal


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 este algoritmo se hace justamente lo contrario, creamos una curva con el número de
puntos que necesitamos, sin necesidad de realizar prueba y error. En éste algoritmo,
debido a la complejidad que supone la aplicación del algoritmo de Schoof para primos
grandes, se cambia esa técnica por las propiedades derivadas de la multiplicación
compleja en las curvas elípticas.

Este método es muy utilizado actualmente. Se conjetura que tiene complejidad


polinomica de orden O((logN ) para todos los numero enteros, pero no está
totalmente probado, aunque se ha probado para la mayoría.

Test de primalidad AKS

Manindra Agrawal, Neeraj Kayal y Nitin Saxena publicaron en 2002, en su artículo


PRåMES is in P el primer certificado de primalidad cuya complejidad polinómica está
completamente probada, sin tener que recurrir a ninguna conjetura no probada.
presentaron un algoritmo determinista de clase P para la determinación de la primalidad
de un número.

ãa clave del nuevo algoritmo AKS está en la siguiente extensión del pequeño teorema
de Fermat: dados dos enteros a; N tales que mcd(a;N) = 1, entonces N es primo si y sólo
si

ሺš െ á୒ ‫ ؠ‬ሺš ୒ െ á ሺ‘†

Por tanto, dado N como entrada, para ejecutar un test de primalidad para
N escogemos a con mcd(a;N) = 1 y verificamos la ecuación. El cálculo de
ሺš െ á୒ , sin embargo, es exponencial (en logN) si hemos de probar todos las
a's posibles. Para superar este problema, los autores evalúan los dos lados de la ecuación
módulo un polinomio š െ á para un valor adecuado de r, es decir, calculan

ሺš െ á୒ ‫ ؠ‬ሺš ୒ െ á ሺ‘†š െ á  ሺ‫ככ‬.

En esta ultima ecuación, quiere decir que r es un número primo y que r - 1 tiene un
factor primo q grande que divide al orden de N (mod r). ãa existencia de un r con esta
propiedad está garantizada por resultados previos en teoría de números. Además, los
autores prueban que, para un N muy grande, un valor adecuado de r se puede conseguir
en el intervalo [c1 (logN)6; c2 (logN)6 ] para unas ciertas constantes positivas c1 y c2.

Por tanto, para ejecutar un test de primalidad para un N dado, el algoritmo


AKS consiste en dos iteraciones. En la primera, se selecciona un valor adecuado de r.
Comenzando en r = 2 e incrementando r en una unidad en cada paso, se comprueba que
mcd(r, N) = 1 (en otro caso N es compuesto), se comprueba que r es primo por
búsqueda exhaustiva (lo que supone comprobar O(logN)6 posibles factores), que el
factor más grande q, de r-1 satisface
q w4(log N)& ଵ y que ሺ ିଵ୯
, öሺ‘†&. Una vez seleccionado el valor de r, el
algoritmo hace una segunda iteración que verifica la ecuación (**) para todos los
valores de a entre 1 y 4(log N)&ଵ (la elección del rango en esta segunda iteración se
hace por razones técnicas en la demostración de la corrección del algoritmo). Si en
cualquier iteración la ecuación (**) deja de satisfacerse, entonces N es compuesto. Si
no, N es primo.

ãos autores se las arreglaron para formular el siguiente algoritmo, que se ha probado
puede ejecutarse en un tiempo de complejidad máxima de
O ((Ž‘‰ ଵ஫ n).
ãos autores demostraron además que si determinados números primos (llamados
Primosde Sophie Germain) tienen la distribución conjeturada por un matemático
llamado Ardí, el exponente 12 que aparece en la expresión de complejidad puede
reducirse a 6. Sin embargo AKS no tiene relevancia en la práctica.
Números primos y criptografía

El Teorema Fundamental de la Aritmética es un resultado de existencia. Nos dice que


para cada número 
 una manera de escribirlo como producto de números primos
pero no nos dice cómo hacerlo. Si consideramos un número natural ³pequeño´, digamos
3.780, podemos  Ê  fácilmente en producto de primos haciendo divisiones
sencillas: 3.780 = 2 × 2 × 3 × 3 × 3 × 5 × 7.
Uno pensaría que esta operación, se puede hacer con cualquier número. Esto no es así ni
mucho menos. En general, encontrar los números primos que dividen a un número dado
es un problema muy difícil, y no sólo desde un punto de vista teórico, sino también
computacional. Es decir, que ni el ordenador más potente puede encontrar, en un tiempo
razonable, los divisores primos de un número un poco grande. Tanto es así que muchos
métodos de codificación de información usan este hecho.

ãos primeros sistemas de transmisión de mensajes secretos se basaban en el intercambio


de una clave entre el emisor y el receptor con un contacto directo previo. Esto, en
comunicaciones a grandes distancias no era muy práctico ya que hacía necesario que
emisor y receptor se juntasen cada vez que motivos de seguridad obligaban a cambiar la
clave. En 1977, Rivest, Shamir y Adleman, científicos del MåT (Masachussests ånstitute
of Technology) en EEUU, idearon un esquema de
 
. Según este
método, llamado RSA por las iniciales de los apellidos de sus creadores, el receptor
hace público un número natural ³grande´, del cual conoce su descomposición en
factores primos.
ão anterior se basa en criptografía de clave pública. Cuya idea es cifrar un mensaje de
alguna manera, de forma que sea ilegible para el que no sepa descifrarlo. Para ello
necesitamos dos elementos básicos: un algoritmo de cifrado, y dos clave.

Este tipo de cifrado, es llamado cifrado asimétrico, en el que se utilizan dos claves
relacionadas, de forma que si se cifra con una, se debe descifrar con la otra, y viceversa.
Si mantenemos una de ellas secreta, y sólo entregamos la otra, cualquiera puede cifrar
mensajes que sólo yo puedo descifrar. Y al revés, si yo cifro un mensaje, cualquiera
puede descifrarlo, pero sabe que sólo yo he podido cifrarlo. Esto es lo que se conoce
como sistemas de clave pública: de la pareja de claves, una se distribuye libremente
(clave pública), y la otra se mantiene secreta (clave privada). Estos sistemas son
ampliamente utilizados en informática, tanto para cifrar mensajes como para firmarlos
digitalmente. En efecto, si yo cifro un mensaje con mi clave privada, existe la certeza de
que sólo yo he podido cifrar ese mensaje, por lo que es el equivalente a una firma.

ÍCómo se consigue esto? ãa criptografía asimétrica se basa en algoritmos no


reversibles, es decir, no tienen un algoritmo inverso. Además, tienen la peculiaridad de
que una pareja de claves se relaciona de la forma mencionada antes. Si cifro con una,
sólo puedo descifrar con la otra. Un punto fundamental es que la relación entre las
claves no es evidente, es decir, no se puede deducir la clave privada a partir de la clave
pública.

ãa base de todo este tinglado son los números primos. Supongo que todo el mundo
recuerda lo que es un número primo. Otra definición importante a tener en cuenta es la
de números coprimos. Bien, una vez recordadas estas nociones básicas de matemáticas,
vamos a explicar de forma sencilla uno de los algoritmos de cifrado asimétrico más
utilizados: RSA. ãa generación de la pareja de claves en RSA se hace de la siguiente
manera:

1.c Buscamos dos números primos distintos (y bastante grandes), a los que
llamaremos  y .
2.c Obtenemos el producto de dichos números ( · ), al que llamaremos Ê. Es decir,
Ê= ·.
3.c Obtenemos el producto de los dos números primos menos uno, es decir (-1) (-
1), al que llamaremos !. Es decir, != (-1) · (-1). Ésta es la llamada función ij
de Euler, y nos indica el número de todos los números coprimos con Ê, menores
o iguales que Ê.
4.c Buscamos un número primo, menor que !, y coprimo con !, es decir, que no sea
factor de !, o dicho de otra manera, que ! no sea múltiplo de ese número. A este
número lo llamaremos . Tenemos por tanto que ! no es divisible por .
5.c Buscamos un número, al que llamaremos , tal que su producto con , se pueda
dividir entre !, dando como resto 1. O dicho de otra manera, · - 1 es divisible
entre !.
Una vez hecho esto, resulta que estos números tienen unas propiedades muy
interesantes. Si escogemos un número cualquiera , y realizamos la operación 
Ê (donde  se refiere al resto de la división, es decir, calculo el resto de "Ê),
obtengo un número, al que llamaremos , que cumple lo siguiente:    Ê. Es
decir, si utilizo , como exponente, obtengo un número, al que si le aplico el mismo
algoritmo, pero con  como exponente, me da el número original. Así que ya tenemos
nuestra pareja de claves. El par (, Ê) sería la clave pública, y el par (, Ê) sería la clave
privada.

Hemos calculado  y  (las claves) a partir de !, pero este último número no lo


necesitamos para nada una vez calculadas las claves, y por tanto lo podemos borrar para
siempre (al igual que los números  y ). Si conociéramos !, podríamos deducir una
clave a partir de la otra, ya que eso es lo que hemos hecho durante la generación de
claves (primero generamos , y luego  a partir de ! y ). Y para obtener !, necesitamos
factorizar Ê (es decir, obtener los números primos que lo componen,  y ). Con nuestro
conocimiento actual de matemáticas, tenemos herramientas para saber si un número es
primo o no, sin necesidad de factorizarlo. Factorizar un número suficientemente grande,
puede llevar siglos aunque utilicemos los ordenadores más rápidos del mundo, mientras
que averiguar si un número del mismo tamaño es primo o no, se puede hacer en
segundos (o minutos).

Esto quiere decir que si encontramos una forma de factorizar números grandes en poco
tiempo, habremos descifrado el algoritmo RSA. O dicho de otra forma, para descifrar el
algoritmo, necesitamos encontrar nuevas técnicas de factorización de números. Es decir,
necesitamos conocimientos de matemáticas que, a día de hoy, nadie tiene. No importa
los conocimientos de informática que uno tenga, sino los conocimientos de
matemáticas. Otra posible forma de reventar el algoritmo sería desarrollando
supercomputadoras millones de veces más rápidas que las actuales, algo que de
momento no es posible con la actual tecnología de semiconductores de silicio (tal vez se
consiga con futuros ordenadores cuánticos).
Este número es usado por el emisor para cifrar sus mensajes. ãa idea es que aunque
todo el mundo tiene acceso a la clave pública y al mensaje cifrado, éste sólo pueden ser
descifrado si se conocen los números primos que dividen al número clave. Para que nos
hagamos una idea de qué significa ³grande´, actualmente se considera segura una clave
pública dada por un número natural de más de 300 cifras. Por supuesto, a medida que
evolucionan las capacidades de los ordenadores, la idea de lo que es un número
³grande´ va cambiando.

Estas aplicaciones de los números primos en el campo de la criptografía muestran cómo


las Matemáticas más abstractas pueden tener relación directa con actividades tan
mundanas como el uso de un cajero automático.
Conclusiones

ãuego de realizar este trabajo llegamos a las siguientes conclusiones:

@c El aporte de los griegos a los números primos, ayudó enormemente para la


creación de los criterios de primalidad.
@c El constante perfeccionamiento y mejora ha facilitado a compilar los mejores
tests de primalidad.
@c Desde la Criba de Eratóstenes hasta el test de AKS, todos los criterios son
efectivos para el cálculo de estos números primos.
@c ãos criterios de primalidad ha permitido seguir formando la lista de los números
primos.
@c Como señalamos en el trabajo, los criterios probabilísticos son tan efectivos
como los criterios determinísticos.
@c El pequeño teorema de Fermat es considerado hoy en día la base de métodos de
verificación de números primos que se utilizan aún hoy en ordenadores
electrónicos.
@c En los últimos años los primos de Mersenne se han buscado utilizando el test de
ãucas-ãehmer y son los números primos más grandes que se han encontrado.
@c ãos métodos de factorización también han contribuido a determinar los números
primos.
@c A la hora de encontrar los números primos, el test de AKS es el criterio más
efectivo para encontrarlos.
@c ãos criterios señalados en este trabajo son empleados y es de gran ayuda
en la criptografía.
Bibliografía

@c T.M. apostol, åntroducción a la teoría analítica de números.

@c Alberto Rodríguez García, Certificados de Primalidad

@c José ã. Bueso Montero, Números Perfectos Y Matemáticos


åmperfectos.

@c Rocío Gutiérrez Bermejo, Historia De ãas Matemáticas

ãos Números Primos.

@c Equipo Torneo El Numero de Oro, Apuntes De Matemáticas


Olímpicas, Santiago De Chile, 2008.

Páginas web:

@c http://ciencia.astroseti.org/matematicas/articulo.php ?num=3492
@c http://es.wikilingue.com/ca/N%C3%BAmero_primo#Teorema_de_T
chebychev
@c http://es.wikilingue.com/ca/Test_de_primalitat_de_Solovay -Strassen
@c http://en.wikipedia.org/wiki/Pocklington_primality_test
@c http://www.lorem-ipsum.es/blogs/hal9000/?p=35

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy