Generalización del símbolo de Legendre en la teoría de números
Símbolo de Jacobi ( a/norte ) para varios k (en la parte superior) y n (en el lado izquierdo). Solo se muestran 0 ≤ k < n , ya que debido a la regla (2) a continuación, cualquier otro k puede reducirse módulo n . Los residuos cuadráticos están resaltados en amarillo; tenga en cuenta que ninguna entrada con un símbolo de Jacobi de −1 es un residuo cuadrático, y si k es un residuo cuadrático módulo un coprimo n , entonces ( a/norte ) = 1 , pero no todas las entradas con un símbolo de Jacobi de 1 (ver lasfilas n = 9 y n = 15 ) son residuos cuadráticos. Observe también que cuando n o k es un cuadrado, todos los valores son no negativos.
Para cualquier entero a y cualquier entero impar positivo n , el símbolo de Jacobi ( a/norte ) se define como el producto de los símbolos de Legendre correspondientes a los factores primos de n :
dónde
es la factorización prima de n .
El símbolo de Legendre ( a/pag ) se define para todos los números enteros a y todos los primos impares p por
Siguiendo la convención normal para el producto vacío, ( a/1 ) = 1.
Cuando el argumento inferior es un primo impar, el símbolo de Jacobi es igual al símbolo de Legendre.
Tabla de valores
La siguiente es una tabla de valores del símbolo de Jacobi ( a/norte ) con n ≤ 59, k ≤ 30, n impar.
Propiedades
Los siguientes hechos, incluso las leyes de reciprocidad, son deducciones directas de la definición del símbolo de Jacobi y las propiedades correspondientes del símbolo de Legendre. [2]
El símbolo de Jacobi se define solo cuando el argumento superior ("numerador") es un entero y el argumento inferior ("denominador") es un entero impar positivo.
1. Si n es primo (impar), entonces el símbolo de Jacobi ( a/norte ) es igual a (y se escribe igual que) el símbolo de Legendre correspondiente.
Si ( a/norte ) = −1 entonces a es un residuo cuadrático módulo n .
Si a es un residuo cuadrático módulo n y mcd ( a , n ) = 1, entonces ( a/norte ) = 1.
Pero, a diferencia del símbolo de Legendre:
Si ( a/norte ) = 1 entonces a puede ser o no un residuo cuadrático módulo n .
Esto se debe a que para que a sea un residuo cuadrático módulo n , tiene que ser un residuo cuadrático módulo cada factor primo de n . Sin embargo, el símbolo de Jacobi es igual a uno si, por ejemplo, a es un no residuo módulo exactamente dos de los factores primos de n .
Aunque el símbolo de Jacobi no puede interpretarse uniformemente en términos de cuadrados y no cuadrados, puede interpretarse uniformemente como el signo de una permutación según el lema de Zolotarev .
Reduce el "numerador" módulo el "denominador" usando la regla 2.
Extrae cualquier "numerador" par usando la regla 9.
Si el "numerador" es 1, las reglas 3 y 4 dan un resultado de 1. Si el "numerador" y el "denominador" no son coprimos, la regla 3 da un resultado de 0.
De lo contrario, el "numerador" y el "denominador" ahora son números enteros coprimos positivos impares, por lo que podemos invertir el símbolo usando la regla 6 y luego regresar al paso 1.
Además del código a continuación, Riesel [4] lo tiene en Pascal.
Implementación enLua
función jacobi ( n , k ) assert ( k > 0 y k % 2 == 1 ) n = n % k t = 1 mientras n ~= 0 hacer mientras n % 2 == 0 hacer n = n / 2 r = k % 8 si r == 3 o r == 5 entonces t = - t fin fin n , k = k , n si n % 4 == 3 y k % 4 == 3 entonces t = - t fin n = n % k fin si k == 1 entonces devuelve t de lo contrario devuelve 0 fin fin
Implementación enC++
// a/n se representa como (a,n) int jacobi ( int a , int n ) { assert ( n > 0 && n % 2 == 1 ); //paso 1 a = ( a % n + n ) % n ; //Manejar (a < 0) int t = 1 ; int r ; //paso 3 while ( a != 0 ) { //paso 2 while ( a % 2 == 0 ) { a /= 2 ; r = n % 8 ; if ( r == 3 || r == 5 ) { t = - t ; } } //paso 4 r = n ; n = a ; a = r ; if ( a % 4 == 3 && n % 4 == 3 ) { t = - t ; } a = a % n ; } si ( n == 1 ) { devolver t ; } de lo contrario { devolver 0 ; } }
Ejemplo de cálculos
El símbolo de Legendre ( a/pag ) solo se define para primos impares p . Obedece las mismas reglas que el símbolo de Jacobi (es decir, la reciprocidad y las fórmulas suplementarias para ( -1/pag ) y ( 2/pag ) y la multiplicidad del "numerador".)
Problema: Dado que 9907 es primo, calcula ( 1001/9907 ) .
Usando el símbolo de Legendre
Usando el símbolo de Jacobi
La diferencia entre ambos cálculos es que cuando se utiliza el símbolo de Legendre, el "numerador" debe factorizarse en potencias primos antes de invertir el símbolo. Esto hace que el cálculo con el símbolo de Legendre sea significativamente más lento que el que utiliza el símbolo de Jacobi, ya que no se conoce ningún algoritmo de tiempo polinomial para factorizar números enteros. [5] De hecho, esta es la razón por la que Jacobi introdujo el símbolo.
Prueba de primalidad
Existe otra forma en la que los símbolos de Jacobi y Legendre difieren. Si se utiliza la fórmula del criterio de Euler módulo un número compuesto, el resultado puede ser o no el valor del símbolo de Jacobi y, de hecho, puede que ni siquiera sea −1 o 1. Por ejemplo,
Entonces, si no se sabe si un número n es primo o compuesto, podemos elegir un número aleatorio a y calcular el símbolo de Jacobi (a/norte) y compararlo con la fórmula de Euler; si difieren módulo n , entonces n es compuesto; si tienen el mismo residuo módulo n para muchos valores diferentes de a , entonces n es " probablemente primo ".
Como uso indirecto, es posible utilizarlo como una rutina de detección de errores durante la ejecución de la prueba de primalidad de Lucas-Lehmer que, incluso en hardware de computadoras modernas, puede tardar semanas en completarse cuando se procesan números de Mersenne superiores a (el mayor primo de Mersenne conocido a octubre de 2024). En casos nominales, el símbolo de Jacobi:
Esto también es válido para el residuo final y, por lo tanto, se puede utilizar como verificación de la validez probable. Sin embargo, si se produce un error en el hardware, existe un 50 % de posibilidades de que el resultado sea 0 o 1, y no cambie con los términos subsiguientes (a menos que se produzca otro error y vuelva a cambiarlo a -1).
Véase también
Símbolo de Kronecker , una generalización del símbolo de Jacobi a todos los números enteros.
Operaciones para factorizar n . Véase Cohen, pág. 495.
Referencias
Cohen, Henri (1993). Un curso de teoría algebraica computacional de números . Berlín: Springer . ISBN.3-540-55640-0.
Ireland, Kenneth; Rosen, Michael (1990). Una introducción clásica a la teoría de números moderna (segunda edición). Nueva York: Springer . ISBN 0-387-97329-X.
Lemmermeyer, Franz (2000). Leyes de reciprocidad: de Euler a Eisenstein . Berlín: Springer . ISBN 3-540-66957-4.
Riesel, Hans (1994), Números primos y métodos informáticos para factorización (segunda edición) , Boston: Birkhäuser, ISBN 0-8176-3743-5
Shallit, Jeffrey (diciembre de 1990). "Sobre el peor caso de tres algoritmos para calcular el símbolo de Jacobi". Journal of Symbolic Computation . 10 (6): 593–61. doi : 10.1016/S0747-7171(08)80160-5 . Informe técnico de informática PCS-TR89-140.
Vallée, Brigitte ; Lemée, Charly (octubre de 1998). Análisis de casos promedio de tres algoritmos para calcular el símbolo de Jacobi (informe técnico). CiteSeerX 10.1.1.32.3425 .
Eikenberry, Shawna Meyer; Sorenson, Jonathan P. (octubre de 1998). "Algoritmos eficientes para calcular el símbolo de Jacobi" (PDF) . Journal of Symbolic Computation . 26 (4): 509–523. CiteSeerX 10.1.1.44.2423 . doi :10.1006/jsco.1998.0226.
Enlaces externos
Calcular el símbolo de Jacobi Archivado 2016-10-05 en Wayback Machine muestra los pasos del cálculo.