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.
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 .
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.
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.
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 .Algoritmos de teoría de números | |
---|---|
Pruebas de simplicidad | |
Encontrar números primos | |
Factorización | |
logaritmo discreto | |
Encontrar MCD | |
Módulo aritmético | |
Multiplicación y división de números. | |
Calcular la raíz cuadrada |