• No se han encontrado resultados

Test de pseudoprimalidad de Fermat

In document INTRODUCCIÓN A LA MATEMÁTICA DISCRETA (página 88-94)

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.

In document INTRODUCCIÓN A LA MATEMÁTICA DISCRETA (página 88-94)

Documento similar