Implementación de algoritmos de teoría de números/Raíz cuadrada modular

De testwiki
Ir a la navegación Ir a la búsqueda

Resolver en aritmética modular una congruencia de la forma r2n (mod p), donde p es un número primo se conoce como encontrar la raíz cuadrada de n modulo p.

El algoritmo de Tonelli–Shanks (o algoritmo RESSOL) es el más usado. Tonelli–Shanks no puede usarse para módulos compuestos: el encontrar raíces módulo números compuestos es un problema computacional equivalente a la factorización de enteros.[1]

El algoritmo

Operaciones y comparaciones de elementos del grupo multiplicativo de enteros módulo p (/p)× son expresadas aquí implícitamente mod p.

Entradas:

  • p, un primo
  • n, un elemento de /p tal que las soluciones de la congruencia r2 = n exista; cuando esto se cumpla se dirá que n es un residuo cuadrático mod p.

Salidas:

  • r en /p tal que r2 = n

Algoritmo:

  1. Factorizando potencia de 2, encontrar Q y S tales que p1=Q2S con Q impar
  2. Buscar un z en /p que sea un residuo no cuadrático.
    • La mitad de los elementos de ese conjunto serán residuos no cuadráticos.
    • Los candidatos pueden ser testeados mediante el criterio de Euler o buscando el símbolo de Jacobi.
  3. Sea
    MSczQtnQRnQ+12
  4. Bucle:
    • Si t = 0, retornar r = 0
    • Si t = 1, retornar r = R
    • De lo contrario, use el cuadrado repetidamente para encontrar el mínimo i, 0 < i < M, tal que t2i=1
    • Sea bc2Mi1, y establezca
      Micb2ttb2RRb

Una vez que haya resuelto la congruencia con r, la segunda solución es r(modp). Si la última i tal que t2i=1 es M, entonces no existe una solución a la congruencia, ie n no es un residuo cuadrático.

Esto es más útil cuando p ≡ 1 (mod 4). Para primos tales que p ≡ 3 (mod 4), este problema tienes las posibles soluciones r=±np+14(modp). Si esas satisfacen que r2n(modp), esas son las únicas soluciones. Si no, r2n(modp), n es un residuo no cuadrático y no hay soluciones

Referencias

  1. Oded Goldreich, Computational complexity: a conceptual perspective, Cambridge University Press, 2008, p. 588.