2.9 Pseudoprimalidad
2.9.1 Test de pseudoprimalidad de Fermat
Proposici´on 2.20 [Test de pseudoprimalidad de Fermat]
Sea n un entero positivo. Si existe un entero a para el que an 6≡ a (mod n),
Pseudoprimalidad 89
Demostraci´on.Si n fuese primo, el corolario del peque˜no teorema de Fermat nos garantizar´ıa que an ≡ a (mod n), por lo que n no puede ser primo.
Los chinos utilizaban este test para a = 2 y conjeturaron hace 25 siglos que el rec´ıproco tambi´en era cierto, se decir, que si n superaba el test para a = 2, entonces n era considerado primo. Esto result´o ser falso, pero hasta 1819 no se encontr´o un contraejemplo: existen n´umeros n que siendo compuestos verifican 2n≡ 2 (mod n), es decir, que superan el test de pseudoprimalidad de Fermat
para la base 2 y sin embargo no son primos. A dichos enteros los denominamos pseudoprimos: parecen que son primos, pero de hecho son compuestos. Definici´on 2.6 [Pseudoprimos]
Un entero n se dice que es pseudoprimo para la base a si, siendo compuesto, verifica que an≡ a (mod n).
Ejemplo 2.22 El n´umero 341 = 11 · 31 es compuesto. Sin embargo, al ser compuesto y verificar que 2341 ≡ 2 (mod 341), resulta ser un pseudoprimo
para la base 2.
Si el n´umero de pseudoprimos para una determinada base a fuese finito bas- tar´ıa aplicar el test de pseudoprimalidad de Fermat en dicha base a un deter- minado entero n para decidir:
• Si an 6≡ a (mod n) el n´umero es compuesto.
• Si an ≡ a (mod n) el n´umero o es compuesto o es pseudoprimo para
dicha base. Mirando si figura en la lista de los pseudoprimos para dicha base podr´ıamos decidir si se trata de un primo o de un n´umero com- puesto.
Desgraciadamente, esto no es posible ya que:
Teorema 2.21 Existen infinitos pseudoprimos para cualquier base a. Demostraci´on. Haremos la demostraci´on para la base 2.
es. Como 2n− 1 > n, partiendo de n = 341 podremos entonces generar una sucesi´on infinita de pseudoprimos para dicha base.
Si n es pseudoprimo, es compuesto, n = rs con 1 < r, s < n y dado que (x − 1) | (xs− 1) =⇒ (2r− 1) | ((2r)s− 1) = 2n− 1 con 2r− 1 > 1 2n− 1 tambi´en es compuesto.
Debemos probar ahora que 22n−1 ≡ 2 (mod 2n− 1).
Como n es pseudoprimo para la base 2
2n ≡ 2 (mod n) =⇒ 2n = nk + 2 para alg´un entero k ≥ 1
Dado que (2n− 1) | ((2n)k− 1) = 2nk − 1, se obtiene que
2nk ≡ 1 (mod 2n− 1) ⇐⇒ 2nk+1 ≡ 2 (mod 2n− 1) Teniendo en cuenta que nk + 1 = 2n− 1
22n−1 ≡ 2 (mod 2n− 1) por lo que 22n−1
es pseudoprimo para la base 2.
Otra posible estrategia cuando an≡ a (mod n) es cambiar de base.
Ejemplo 2.23
• 2341 ≡ 2 (mod 341). No sabemos si 341 es primo o pseudoprimo para la
base 2. Es decir, no sabemos si es primo o compuesto.
• 3341 ≡ 168 6= 3 (mod 341). Podemos asegurar que es compuesto.
Obs´ervese que si n supera el test para bases a y b (posiblemente iguales) an ≡ a (mod n) bn≡ b (mod n) =⇒ (ab)n≡ ab (mod n)
es decir, tambi´en supera el test para la base ab, no aportando nada nuevo la aplicaci´on de este test, por lo que parece sensato restringir los valores de las bases a los sucesivos n´umeros primos.
Al estudiar el test de Wilson, dijimos que no era aplicable ya que el c´alculo de (n − 1)! requiere, para valores grandes de n un n´umero de operaciones que
Pseudoprimalidad 91
en un ordenador puede superar la edad del Universo. As´ı para un n´umero de 100 d´ıgitos n ≈ 10100 se deber´ıan realizar 10100 productos y un ordenador que realizase un bill´on de operaciones por segundo requerir´ıa aproximadamente 3 · 1078 siglos en realizarlos.
Al aplicar el test de pseudoprimalidad de Fermat es necesario calcular an por
lo que multiplicando a por a sucesivamente ser´ıan necesarias n−1 operaciones, las mismas que requiere el c´alculo de (n − 1)! Por lo que nuestro ordenador tardar´ıa 3 · 1078 siglos en realizar los c´alculos cuando n es un n´umero de 100
d´ıgitos.
Veamos c´omo puede reducirse el n´umero de operaciones en el c´alculo de grandes potencias.
Algoritmo de c´alculo de grandes potencias
Supongamos que queremos calcular an. Por ejemplo n19.
• Expresamos n en notaci´on binaria. 19 → 10011.
• Intercalamos una C entre cada dos cifras. 1C0C0C1C1. • Eliminamos los ceros. 1CCC1C1.
• Sustituimos los unos por la letra M . M CCCM CM.
Comenzando ahora por 1 y siguiendo la secuencia obtenida en la que M re- presenta multiplicar por n y C elevar al cuadrado vamos obteniendo:
1−→ aM −→ aC 2 −→ aC 4 −→ aC 8 −→ aM 9 −→ aC 18 −→ aM 19
Este algoritmo nos asegura que, para cualquier entero positivo n, el n´umero de multiplicaciones que requiere el c´alculo de an es, como m´aximo, el doble del n´umero de d´ıgitos de la expresi´on binaria de n, es decir, como m´aximo 2 · (1 + blog2nc).
Para un n´umero de 100 d´ıgitos n ≈ 10100 habr´ıa que hacer, en el peor de los
casos
2 · (1 + blog210100c) = 666
operaciones y nuestro ordenador que realiza un bill´on de operaciones por se- gundo tardar´ıa menos de una milmillon´esima de segundo en realizarlas, frente a los 3 · 1078 siglos que tardar´ıa multiplicando a por a sucesivamente.
Podemos por tanto asegurar que el test de pseudoprimalidad de Fermat es f´acilmente aplicable.
Hemos visto que si para una determinada base el test no puede asegurarnos si nuestro n´umero es primo o compuesto, podemos cambiar de base. As´ı, por ejemplo, si la base 2 no nos determina c´omo es el n´umero, cambiamos a la base 3 y as´ı sucesivamente (utilizando siempre n´umeros primos como base). Es evidente que al aumentar el n´umero de bases para las que an≡ a (mod n) mayor probabilidad tendremos de que nuestro n´umero n sea primo.
¿Ser´ıa una buena estrategia seguir probando bases hasta encontrar al- guna en la que, si el n´umero es compuesto, se detecte como compuesto? La respuesta evidentemente es que no.
Definici´on 2.7 [N´umeros de Carmichael]
Se denominan n´umeros de Carmichael a aquellos n´umeros que siendo com- puestos superan los test de pseudoprimalidad de Fermat cualquiera que sea la base que se tome.
n de Carmichael ⇐⇒ n compuesto an ≡ a (mod n) ∀ a ∈ Z+
Los n´umeros de Carmichael se dan con mucha menor frecuencia que los primos aunque no son dif´ıciles de construir.
En 1912, Carmichael conjetur´o que existen infinitos, y fue probado en 1992 por Alford, Granville y Pomerance.
Teorema 2.22 [Caracterizaci´on de los n´umeros de Carmichael]
Un n´umero compuesto n es de Carmichael si, y s´olo si, es libre de cuadrados (un producto de primos distintos) y p − 1 divide a n − 1 para cada primo p que divide a n.
Pseudoprimalidad 93
Ejemplo 2.24 561 = 3 · 11 · 17 es compuesto y libre de cuadrados y adem´as 3 − 1 = 2 | (561 − 1) = 560 11 − 1 = 10 | (561 − 1) = 560 17 − 1 = 16 | (561 − 1) = 560
por lo que se trata de un n´umero de Carmichael. Ejemplo 2.25 Encontrar todos los n´umeros de Carmichael de la forma 7·13·p donde p sea un primo mayor que 13.
Al ser p > 13 sabemos que el n´umero n = 7 · 13 · p es libre de cuadrados. La otra condici´on que debe cumplir es que 6, 12 y p − 1 dividan a n − 1 es decir:
n = 7 · 13 · p ≡ 1 (mod 6) ⇒ p ≡ 1 (mod 6) n = 7 · 13 · p ≡ 1 (mod 12) ⇒ p ≡ 7 (mod 12)
n = 7 · 13 · p ≡ 1 (mod (p − 1)) ⇒ 90 ≡ 0 (mod (p − 1)) ⇒ (p − 1) | 90 Como los divisores de 90 son 1, 2, 3, 5, 6, 9, 10, 15, 18, 30, 45 y 90, los posible valores de p son 2, 3, 4, 6, 7, 10, 11, 16, 19, 31, 46 y 91.
Al tratarse de un n´umero primo mayor que 13 s´olo nos quedan dos posibilidades o 19 o 31 y dado que ambas verifican las condiciones
p ≡ 1 (mod 6) y p ≡ 7 (mod 12)
ambas son v´alidas, por lo que existen dos n´umeros de Carmichael con dichas caracter´ısticas:
7 · 13 · 19 = 1729 y 7 · 13 · 31 = 2821
Para tratar de evitar los n´umeros de Carmichael al aplicar el test de pseudo- primalidad de Fermat, realizamos el siguiente proceso:
Test de pseudoprimalidad de Fermat
• Si mcd (a, n) = d > 1, como d divide a n sabemos que n es compuesto. • Si mcd (a, n) = 1 y an−1 6≡ 1 (mod n) =⇒ n es compuesto.
Obs´ervese que al ser a ⊥ n podemos hacer uso del teorema de Fermat en vez de su corolario.
• Si mcd (a, n) = 1 y an−1 ≡ 1 (mod n) nos quedaremos con la duda de
si se trata de un primo o de un pseudoprimo para la base a.
1 Escoger, aleatoriamente una base a ∈ {2, . . . , n − 1} 2 Calcular el mcd (a, n)
Si mcd (a, n) > 1, devolver compuesto
si no, si an−1 6≡ 1 (mod n), devolver compuesto si no, devolver posible primo
Obs´ervese que al tomar a ∈ {2, . . . , n − 1} existen n − φ(n) − 1 posibilidades de que mcd (a, n) > 1 en cuyo caso sabemos que el n´umero n es compuesto y s´olo φ(n) − 1 casos en los que mcd (a, n) = 1 y ser´ıa necesario aplicar realmente el test de pseudoprimalidad, por lo que existen muchas posibilidades de que aun siendo n un n´umero de Carmichael, el test detecte que se trata de un n´umero compuesto.