Prueba de simplicidad de Luke

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 7 de abril de 2021; la verificación requiere 1 edición .

En teoría de números , la prueba de primalidad de Lucas es la prueba de primalidad para un número natural n ; para que funcione, necesitas saber la factorización. Para un número primo n , los factores primos del número , junto con alguna base a , constituyen un certificado de Pratt , que permite probar en tiempo polinomial que n es primo.

Descripción

Sea n > 1 un número natural. Si existe un entero a tal que y

y para cualquier divisor primo q del número

entonces n es primo.

Si no existe tal número a , entonces n es un número compuesto .

Prueba

Si n es primo, entonces el grupo residuo es cíclico, es decir, tiene un generador cuyo orden coincide con el orden del grupo , lo que significa que para cualquier divisor primo del número , se realiza una comparación:

Si n es compuesto, entonces y luego , o . Si suponemos que para esto también se satisface a , entonces, dado que , encontramos que el grupo tiene un elemento de orden , significa que se divide , lo que contradice el hecho de que para el compuesto n .

De acuerdo con la ley de contraposición, obtenemos el criterio de Lucas.

Ejemplo

Por ejemplo, tomemos n = 71. Entonces . Elijamos al azar . Calculamos:

Veamos las comparaciones para :

Desafortunadamente _ Por lo tanto, todavía no podemos afirmar que 71 sea primo.

Probemos con otro número aleatorio a , elige . Calculamos:

Nuevamente verifique las comparaciones para :

Por lo tanto, 71 son primos.

Tenga en cuenta que para el cálculo rápido del módulo de exponentes, se utiliza el algoritmo de exponenciación binaria tomando el resto módulo n después de cada multiplicación.

Nótese también que para un n simple , se sigue de la hipótesis de Riemann generalizada que entre los primeros números hay al menos un generador del grupo , por lo que se puede argumentar condicionalmente que la base a se puede encontrar en tiempo polinomial.

Algoritmo

El algoritmo, escrito en pseudocódigo , es el siguiente:

Entrada : n > 2 es un número impar que se está probando para primalidad; k - un parámetro que determina la precisión de la prueba Conclusión : simple si n es primo, de lo contrario compuesto o posiblemente compuesto ; Definimos todos los divisores primos . Loop1: elige aleatoriamente a del intervalo [2, n − 1] Si devuelve un compuesto De lo contrario Loop2: Para todos los números primos : Si Si no verificamos la comparación para todos luego continuamos ejecutando Loop2 de lo contrario, devuelve un simple De lo contrario, regrese a Loop1 Es posible devolver un compuesto .

Véase también

Literatura