Criterios de Primalidad
Criterios de Primalidad
Criterios de Primalidad
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:
Dedicatoria
c
c
c
c
c
Agradecimiento
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.
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.
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.
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:
ö ö ö ö
ã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.
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:
Matemáticas Modernas:
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.
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.
ܨ ൌ ൫
ö
ൌ
97 = 641*6700417.
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.
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݇ ܰ א.
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.
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)
Siglo XåX
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.
Definición de Divisibilidad:
Dados dos enteros a, b decimos que a es un divisor de b si existe otro ¼ ࢆ אtal que
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 .
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.
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.
Sea p2 el menor divisor primo de a1, entonces existirá un entero a2 tal que
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
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 < < .
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.
ã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
i
t t l tl itti: t
it
t
i
i C t t ll
lit l ili tCitiili it
lti i l
i
hi i i T i
ãiii
t ttill!ittii t illil
t
h t
t Ê Ê l t ti 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
Ê.
ã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:
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.
.
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.
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.
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 .
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í:
ିଵ ؠöሺ݉݀
ؠሺ݉݀
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.
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.
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
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.
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:
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
ã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.
ã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.
O = 2 + 2 = 2 + 2
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:
ሺ ܿ ൌ ݉ ሺ݀ ܾ
Como y son primos entre sí, se sigue que ( + ) es divisible por , lo que nos da:
Am + ) = y;
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:
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
2 c
cc
c
Es un test de primalidad para los números de Proth inventado por François Proth
alrededor de 1878.
൬ ൌ െö
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.
ã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
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 ÷Ê
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.
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
െö
൬ ؠö݉ ݀
െö
ሺ െ ö ൬ö
ö ö ö
݀݉ ؠ
െö
y
ିଵ ؠö(mod N)
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.
Entonces N es primo.
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.
öö ؠöሺ݉ ݀ö
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:
öö ء
ؠöሺ݉
݀ö
ööଵ ء ؠöሺ݉
݀ö
ööଵ ء ؠöሺ݉
݀ö
ିଵ
ቆá ୯ െ ö ቇ ൌ ö
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 á
áିଵ ؠö
ିଵ
ቆá ୯ െ ö ቇ ൌ ö
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.
1.c Para cada primo q que divida a F existe un entero a = a(q) > 1 tal que
2.c Existe un entero b > 1 tal que \ିଵ ؠö (mod N) y ሺ\ െ ö ൌ ö.
Entonces N es primo.
Escogemos = 227 · 5 2, con lo que significa =2. Ahora está claro que mcd ( ) = 1
y > ûܰ
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)
ã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 Sp1 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
!
ۓ
݅ܿ݀݅ݒ݅݀
ܿ ۖ ö݅ܿݑ݀݅ݎ
൬ ൌ ܿܿ݅ݐݎ݀ݑ
۔
ۖ ݉ݑ݀
ەെö݀݀݉ݎݐǤ
áሺ୬ିଵ ؠሺ
á
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
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.
ݔ ؠ ݔሺ݉ ݀
ݔ ء ݔ ሺ݉ܰ݀
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).
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
averiguaramos 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 െ ö
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.
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
ؠെö݉݊݀
)
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.
ௗ
@c mod Ê = 13755 mod 221 = 188 1, Ê 1
ௗ
@c mod Ê = 137110 mod 221 = 205 Ê 1.
m
m
mmm
El algoritmo de Goldwasser-Kilian
mP = *+ y que ݉ܿ݀൫
ܰ ݖൌ ö Ǥ Entonces si p es un divisor de N, se cumple que:
# E(Z/ (pZ)) ؠ0 ().
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
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.
ã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.
ã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
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.
ã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.
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.
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