Articulo de referencia

Algoritmo de Tonelli-Shanks

El algoritmo de Tonelli-Shanks (conocido por Shanks como el algoritmo RESSOL) se utiliza en aritmética modular para resolver r en una congruencia de la forma r 2 ≡ n (mod p ), d...

El algoritmo de Tonelli-Shanks (conocido por Shanks como el algoritmo RESSOL) se utiliza en aritmética modular para resolver r en una congruencia de la forma r 2n (mod p ), donde p es un primo : es decir, para encontrar una raíz cuadrada de n módulo p .

El algoritmo de Tonelli-Shanks no se puede utilizar para módulos compuestos: encontrar raíces cuadradas módulo números compuestos es un problema computacional equivalente a la factorización de enteros . [ 1 ]

Alberto Tonelli [ 2 ] [ 3 ] desarrolló en 1891 una versión equivalente, aunque ligeramente más redundante, de este algoritmo. La versión que se analiza aquí fue desarrollada independientemente por Daniel Shanks en 1973, quien explicó:

Mi tardanza en conocer estas referencias históricas se debió a que le presté el Volumen 1 de la Historia de Dickson a un amigo y nunca me lo devolvió. [ 4 ]

Según Dickson, [ 3 ] el algoritmo de Tonelli puede tomar raíces cuadradas de x módulo potencias primas p λ aparte de los números primos.

Ideas principales

Dado un valor distinto de ceronorte{\displaystyle n}y un primopag>2{\displaystyle p>2}(que siempre será impar), el criterio de Euler nos dice quenorte{\displaystyle n}tiene raíz cuadrada (es decir,norte{\displaystyle n}es un residuo cuadrático ) si y solo si :

nortepag121(modpag){\displaystyle n^{\frac {p-1}{2}}\equiv 1{\pmod {p}}}.

Por el contrario, si un númeroz{\displaystyle z}Si no tiene raíz cuadrada (es un no residuo), el criterio de Euler nos dice que:

zpag121(modpag){\displaystyle z^{\frac {p-1}{2}}\equiv -1{\pmod {p}}}.

No es difícil encontrar tal cosaz{\displaystyle z}, porque la mitad de los enteros entre 1 ypag1{\displaystyle p-1}poseen esta propiedad. Por lo tanto, asumimos que tenemos acceso a dicho no residuo.

Al dividir (normalmente) repetidamente por 2, podemos escribirpag1{\displaystyle p-1}comoQ2S{\displaystyle Q2^{S}}, dóndeQ{\displaystyle Q}es extraño. Tenga en cuenta que si lo intentamos

RnorteQ+12(modpag){\displaystyle R\equiv n^{\frac {Q+1}{2}}{\pmod {p}}},

entoncesR2norteQ+1=(norte)(norteQ)(modpag){\displaystyle R^{2}\equiv n^{Q+1}=(n)(n^{Q}){\pmod {p}}}. SitnorteQ1(modpag){\displaystyle t\equiv n^{Q}\equiv 1{\pmod {p}}}, entoncesR{\displaystyle R}es una raíz cuadrada denorte{\displaystyle n}. De lo contrario, paraMETRO=S{\displaystyle M=S}, tenemosR{\displaystyle R}yt{\displaystyle t}satisfactorio:

  • R2nortet(modpag){\displaystyle R^{2}\equiv nt{\pmod {p}}}; y
  • t{\displaystyle t}es un2METRO1{\displaystyle 2^{M-1}}raíz -ésima de 1 (porquet2METRO1=t2S1norteQ2S1=nortepag12{\displaystyle t^{2^{M-1}}=t^{2^{S-1}}\equiv n^{Q2^{S-1}}=n^{\frac {p-1}{2}}}).

Si, dada la elección deR{\displaystyle R}yt{\displaystyle t}para un caso particularMETRO{\displaystyle M}satisfaciendo lo anterior (dondeR{\displaystyle R}no es una raíz cuadrada denorte{\displaystyle n}), podemos calcular fácilmente otroR{\displaystyle R}yt{\displaystyle t}paraMETRO1{\displaystyle M-1}De modo que se cumplan las relaciones anteriores, podemos repetir esto hastat{\displaystyle t}se convierte en un20{\displaystyle 2^{0}}raíz -ésima de 1, es decir,t=1{\displaystyle t=1}En ese momentoR{\displaystyle R}es una raíz cuadrada denorte{\displaystyle n}.

Podemos comprobar sit{\displaystyle t}es un2METRO2{\displaystyle 2^{M-2}}raíz -ésima de 1 elevándolo al cuadradoMETRO2{\displaystyle M-2}veces y comprobar si es 1. Si lo es, entonces no necesitamos hacer nada, ya que la misma elección deR{\displaystyle R}yt{\displaystyle t}funciona. Pero si no funciona,t2METRO2{\displaystyle t^{2^{M-2}}}debe ser -1 (porque al elevarlo al cuadrado da 1, y solo puede haber dos raíces cuadradas 1 y -1 de 1 módulopag{\displaystyle p}).

Para encontrar un nuevo par deR{\displaystyle R}yt{\displaystyle t}podemos multiplicarR{\displaystyle R}por un factorb{\displaystyle b}, por determinar. Entoncest{\displaystyle t}debe multiplicarse por un factorb2{\displaystyle b^{2}}para mantenerR2nortet(modpag){\displaystyle R^{2}\equiv nt{\pmod {p}}}Entonces, cuandot2METRO2{\displaystyle t^{2^{M-2}}}es -1, necesitamos encontrar un factorb2{\displaystyle b^{2}}de modo quetb2{\displaystyle tb^{2}}es un2METRO2{\displaystyle 2^{M-2}}raíz -ésima de 1, o equivalentementeb2{\displaystyle b^{2}}es un2METRO2{\displaystyle 2^{M-2}}-ésima raíz de -1.

El truco aquí es hacer uso dez{\displaystyle z}, el no residuo conocido. El criterio de Euler aplicado az{\displaystyle z}Lo que se muestra arriba dice quezQ{\displaystyle z^{Q}}es un2S1{\displaystyle 2^{S-1}}-ésima raíz de -1. Entonces, al elevar al cuadradozQ{\displaystyle z^{Q}}repetidamente, tenemos acceso a una secuencia de2i{\displaystyle 2^{i}}raíces -ésimas de -1. Podemos seleccionar la correcta para que sirva comob{\displaystyle b}Con un poco de mantenimiento de variables y una compresión de casos trivial, el siguiente algoritmo surge de forma natural.

El algoritmo

Operaciones y comparaciones sobre elementos del grupo multiplicativo de enteros módulo pZ/pagZ{\displaystyle \mathbb {Z} /p\mathbb {Z} }son implícitamente módulo p .

Entradas :

  • p , un primo
  • n , un elemento deZ/pagZ{\displaystyle \mathbb {Z} /p\mathbb {Z} }de tal manera que existan soluciones a la congruencia r 2 = n ; cuando esto es así, decimos que n es un residuo cuadrático módulo p .

Resultados :

  • r enZ/pagZ{\displaystyle \mathbb {Z} /p\mathbb {Z} }tal que r 2 = n

Algoritmo :

  1. Al factorizar potencias de 2, encuentre Q y S tales quepag1=Q2S{\displaystyle p-1=Q2^{S}}con Q impar
  2. Buscar una z enZ/pagZ{\displaystyle \mathbb {Z} /p\mathbb {Z} }que es un no residuo cuadrático
  3. Dejar
    METROSdozQtnorteQRnorteQ+12{\displaystyle {\begin{aligned}M&\leftarrow S\\c&\leftarrow z^{Q}\\t&\leftarrow n^{Q}\\R&\leftarrow n^{\frac {Q+1}{2}}\end{aligned}}}
  4. Bucle:
    • Si t = 0, devuelve r = 0.
    • Si t = 1, devuelve r = R
    • De lo contrario, utilice la elevación al cuadrado repetida para encontrar el menor i , 0 < i < M , tal quet2i=1{\displaystyle t^{2^{i}}=1}
    • Dejarbdo2METROi1{\displaystyle b\leftarrow c^{2^{M-i-1}}}y establecer
      METROidob2ttb2RRb{\displaystyle {\begin{aligned}M&\leftarrow i\\c&\leftarrow b^{2}\\t&\leftarrow tb^{2}\\R&\leftarrow Rb\end{aligned}}}

Una vez que hayas resuelto la congruencia con r, la segunda solución esr(modpag){\displaystyle -r{\pmod {p}}}. Si el menor i tal quet2i=1{\displaystyle t^{2^{i}}=1}Si M es , entonces no existe solución a la congruencia, es decir, n no es un residuo cuadrático.

Esto es más útil cuando p ≡ 1 (mod 4).

Para números primos tales que p ≡ 3 (mod 4), este problema tiene posibles soluciones.r=±nortepag+14(modpag){\displaystyle r=\pm n^{\frac {p+1}{4}}{\pmod {p}}}. Si estos se cumplenr2norte(modpag){\displaystyle r^{2}\equiv n{\pmod {p}}}, son las únicas soluciones. Si no,r2norte(modpag){\displaystyle r^{2}\equiv -n{\pmod {p}}}, n es un no residuo cuadrático y no hay soluciones.

Prueba

Podemos demostrar que al inicio de cada iteración del bucle se cumplen las siguientes invariantes :

  • do2METRO1=1{\displaystyle c^{2^{M-1}}=-1}
  • t2METRO1=1{\displaystyle t^{2^{M-1}}=1}
  • R2=tnorte{\displaystyle R^{2}=tn}

Inicialmente:

  • do2METRO1=zQ2S1=zpag12=1{\displaystyle c^{2^{M-1}}=z^{Q2^{S-1}}=z^{\frac {p-1}{2}}=-1}(ya que z es un no residuo cuadrático, según el criterio de Euler)
  • t2METRO1=norteQ2S1=nortepag12=1{\displaystyle t^{2^{M-1}}=n^{Q2^{S-1}}=n^{\frac {p-1}{2}}=1}(ya que n es un residuo cuadrático)
  • R2=norteQ+1=tnorte{\displaystyle R^{2}=n^{Q+1}=tn}

En cada iteración, con M' , c' , t' , R' los nuevos valores reemplazando a M , c , t , R :

  • do2METRO1=(b2)2i1=do2METROi2i1=do2METRO1=1{\displaystyle c'^{2^{M'-1}}=(b^{2})^{2^{i-1}}=c^{2^{M-i}2^{i-1}}=c^{2^{M-1}}=-1}
  • t2METRO1=(tb2)2i1=t2i1b2i=11=1{\displaystyle t'^{2^{M'-1}}=(tb^{2})^{2^{i-1}}=t^{2^{i-1}}b^{2^{i}}=-1\cdot -1=1}
    • t2i1=1{\displaystyle t^{2^{i-1}}=-1}ya que tenemos esot2i=1{\displaystyle t^{2^{i}}=1}perot2i11{\displaystyle t^{2^{i-1}}\neq 1}( i es el valor más pequeño tal quet2i=1{\displaystyle t^{2^{i}}=1})
    • b2i=do2METROi12i=do2METRO1=1{\displaystyle b^{2^{i}}=c^{2^{M-i-1}2^{i}}=c^{2^{M-1}}=-1}
  • R2=R2b2=tnorteb2=tnorte{\displaystyle R'^{2}=R^{2}b^{2}=tnb^{2}=t'n}

Det2METRO1=1{\displaystyle t^{2^{M-1}}=1}y la prueba contra t = 1 al comienzo del bucle, vemos que siempre encontraremos un i en 0 < i < M tal quet2i=1{\displaystyle t^{2^{i}}=1}. M es estrictamente menor en cada iteración, y por lo tanto el algoritmo tiene garantizado detenerse. Cuando alcanzamos la condición t = 1 y nos detenemos, el último invariante del bucle implica que R 2 = n .

Orden de t

Alternativamente, podemos expresar los invariantes del bucle utilizando el orden de los elementos:

  • orden(do)=2METRO{\displaystyle \operatorname {ord} (c)=2^{M}}
  • orden(t)|2METRO1{\displaystyle \operatorname {ord} (t)|2^{M-1}}
  • R2=tnorte{\displaystyle R^{2}=tn}como antes

Cada paso del algoritmo mueve t a un subgrupo más pequeño midiendo el orden exacto de t y multiplicándolo por un elemento del mismo orden.

Ejemplo

Resolviendo la congruencia r 2 ≡ 5 (mod 41). 41 es primo como se requiere y 41 ≡ 1 (mod 4). 5 es un residuo cuadrático según el criterio de Euler:54112=520=1{\displaystyle 5^{\frac {41-1}{2}}=5^{20}=1}(como antes, operaciones en(Z/41Z)×{\displaystyle (\mathbb {Z} /41\mathbb {Z} )^{\times }}son implícitamente módulo 41).

  1. pag1=40=523{\displaystyle p-1=40=5\cdot 2^{3}}entoncesQ5{\displaystyle Q\leftarrow 5},S3{\displaystyle S\leftarrow 3}
  2. Encuentra un valor para z:
    • 24112=1{\displaystyle 2^{\frac {41-1}{2}}=1}, por lo tanto, 2 es un residuo cuadrático según el criterio de Euler.
    • 34112=40=1{\displaystyle 3^{\frac {41-1}{2}}=40=-1}, por lo tanto, 3 es un no residuo cuadrático: conjuntoz3{\displaystyle z\leftarrow 3}
  3. Colocar
    • METROS=3{\displaystyle M\leftarrow S=3}
    • dozQ=35=38{\displaystyle c\leftarrow z^{Q}=3^{5}=38}
    • tnorteQ=55=9{\displaystyle t\leftarrow n^{Q}=5^{5}=9}
    • RnorteQ+12=55+12=2{\displaystyle R\leftarrow n^{\frac {Q+1}{2}}=5^{\frac {5+1}{2}}=2}
  4. Bucle:
    • Primera iteración:
      • t1{\displaystyle t\neq 1}, así que no hemos terminado
      • t21=40{\displaystyle t^{2^{1}}=40},t22=1{\displaystyle t^{2^{2}}=1}entoncesi2{\displaystyle i\leftarrow 2}
      • bdo2METROi1=382321=38{\displaystyle b\leftarrow c^{2^{M-i-1}}=38^{2^{3-2-1}}=38}
      • METROi=2{\displaystyle M\leftarrow i=2}
      • dob2=382=9{\displaystyle c\leftarrow b^{2}=38^{2}=9}
      • ttb2=99=40{\displaystyle t\leftarrow tb^{2}=9\cdot 9=40}
      • RRb=238=35{\displaystyle R\leftarrow Rb=2\cdot 38=35}
    • Segunda iteración:
      • t1{\displaystyle t\neq 1}, así que todavía no hemos terminado
      • t21=1{\displaystyle t^{2^{1}}=1}entoncesi1{\displaystyle i\leftarrow 1}
      • bdo2METROi1=92211=9{\displaystyle b\leftarrow c^{2^{M-i-1}}=9^{2^{2-1-1}}=9}
      • METROi=1{\displaystyle M\leftarrow i=1}
      • dob2=92=40{\displaystyle c\leftarrow b^{2}=9^{2}=40}
      • ttb2=4040=1{\displaystyle t\leftarrow tb^{2}=40\cdot 40=1}
      • RRb=359=28{\displaystyle R\leftarrow Rb=35\cdot 9=28}
    • Tercera iteración:
      • t=1{\displaystyle t=1}y hemos terminado; regresarr=R=28{\displaystyle r=R=28}

En efecto, 28² ≡ 5 (mod 41) y (−28) ²13² ≡ 5 (mod 41). Por lo tanto, el algoritmo produce las dos soluciones a nuestra congruencia.

Velocidad del algoritmo

El algoritmo de Tonelli-Shanks requiere (en promedio sobre todas las entradas posibles (residuos cuadráticos y no residuos cuadráticos))

2metro+2k+S(S1)4+12S19{\displaystyle 2m+2k+{\frac {S(S-1)}{4}}+{\frac {1}{2^{S-1}}}-9}

multiplicaciones modulares, dondemetro{\displaystyle m}es el número de dígitos en la representación binaria depag{\displaystyle p}yk{\displaystyle k}es el número de unos en la representación binaria depag{\displaystyle p}. Si el no residuo cuadrático requeridoz{\displaystyle z}se puede encontrar comprobando si un número tomado al azary{\displaystyle y}es un no residuo cuadrático, requiere (en promedio)2{\displaystyle 2}cálculos del símbolo de Legendre . [ 5 ] El promedio de dos cálculos del símbolo de Legendre se explica de la siguiente manera:y{\displaystyle y}es un residuo cuadrático con probabilidadpag+12pag=1+1pag2{\displaystyle {\tfrac {\tfrac {p+1}{2}}{p}}={\tfrac {1+{\tfrac {1}{p}}}{2}}}, que es más pequeño que1{\displaystyle 1}pero12{\displaystyle \geq {\tfrac {1}{2}}}, por lo que en promedio necesitaremos comprobar si uny{\displaystyle y}es un residuo cuadrático dos veces.

Esto demuestra esencialmente que el algoritmo de Tonelli-Shanks funciona muy bien si el módulopag{\displaystyle p}es aleatorio, es decir, siS{\displaystyle S}no es particularmente grande con respecto al número de dígitos en la representación binaria depag{\displaystyle p}. Como se escribió anteriormente, el algoritmo de Cipolla funciona mejor que el de Tonelli-Shanks si (y solo si)S(S1)>8metro+20{\displaystyle S(S-1)>8m+20}Sin embargo, si en cambio se utiliza el algoritmo de Sutherland para realizar el cálculo del logaritmo discreto en el subgrupo 2-Sylow deFpag{\displaystyle \mathbb {F} _{p}^{\ast }}, uno puede reemplazarS(S1){\displaystyle S(S-1)}con una expresión que está asintóticamente acotada porO(SregistroS/registroregistroS){\displaystyle O(S\log S/\log \log S)}. [ 6 ] Explícitamente, se calculami{\displaystyle e}de tal manera quedominorteQ{\displaystyle c^{e}\equiv n^{Q}}y luegoRdomi/2norte(Q+1)/2{\displaystyle R\equiv c^{-e/2}n^{(Q+1)/2}}SatisfaceR2norte{\displaystyle R^{2}\equiv n}(tenga en cuenta quemi{\displaystyle e}es un múltiplo de 2 porquenorte{\displaystyle n}es un residuo cuadrático).

El algoritmo requiere que encontremos un no residuo cuadrático.z{\displaystyle z}No se conoce ningún algoritmo determinista que se ejecute en tiempo polinomial para encontrar tal cosa.z{\displaystyle z}Sin embargo, si la hipótesis generalizada de Riemann es verdadera, existe un no residuo cuadrático.z<2ln2pag{\displaystyle z<2\ln ^{2}{p}}, [ 7 ] lo que permite comprobar cadaz{\displaystyle z}hasta ese límite y encontrar uno adecuadoz{\displaystyle z}en tiempo polinomial . Sin embargo, tenga en cuenta que este es el peor escenario posible; en general,z{\displaystyle z}Se encuentra en un promedio de 2 ensayos como se indicó anteriormente.

Usos

El algoritmo de Tonelli-Shanks puede utilizarse (naturalmente) para cualquier proceso en el que se requieran raíces cuadradas módulo un número primo. Por ejemplo, puede emplearse para hallar puntos en curvas elípticas . También resulta útil para los cálculos del algoritmo de la signatura de Rabin y en la etapa de cribado de la criba cuadrática .

Generalizaciones

Tonelli–Shanks se puede generalizar a cualquier grupo cíclico (en lugar de(Z/pagZ)×{\displaystyle (\mathbb {Z} /p\mathbb {Z} )^{\times }}) y a las raíces k -ésimas para un entero k arbitrario , en particular a tomar la raíz k -ésima de un elemento de un cuerpo finito . [ 8 ]

Si se deben realizar muchas raíces cuadradas en el mismo grupo cíclico y S no es demasiado grande, se puede preparar de antemano una tabla de raíces cuadradas de los elementos de orden de potencia 2 y el algoritmo se puede simplificar y acelerar de la siguiente manera.

  1. Factorizamos las potencias de 2 de p − 1, definiendo Q y S como:pag1=Q2S{\displaystyle p-1=Q2^{S}}con Q impar.
  2. DejarRnorteQ+12,tnorteQR2/norte{\displaystyle R\leftarrow n^{\frac {Q+1}{2}},t\leftarrow n^{Q}\equiv R^{2}/n}
  3. Encontrarb{\displaystyle b}de la tabla tal queb2t{\displaystyle b^{2}\equiv t}y establecerRR/b{\displaystyle R\equiv R/b}
  4. devolver R.

El algoritmo de Tonelli funcionará en módulo p λ

Según la "Teoría de los números" de Dickson [ 3 ]

A. Tonelli [ 9 ] dio una fórmula explícita para las raíces deincógnita2=do(modpagλ){\displaystyle x^{2}=c{\pmod {p^{\lambda }}}}[ 3 ]

La referencia de Dickson muestra la siguiente fórmula para la raíz cuadrada deincógnita2modpagλ{\displaystyle x^{2}{\bmod {p^{\lambda }}}}.

cuandopag=47+1{\displaystyle p=4\cdot 7+1}, os=2{\displaystyle s=2}(s debe ser 2 para esta ecuación) ya=7{\displaystyle a=7}de tal manera que29=227+1{\displaystyle 29=2^{2}\cdot 7+1}
paraincógnita2modpagλdo{\displaystyle x^{2}{\bmod {p^{\lambda }}}\equiv c}entonces
incógnitamodpagλ±(doa+3)βdo(β+1)/2{\displaystyle x{\bmod {p^{\lambda }}}\equiv \pm (c^{a}+3)^{\beta }\cdot c^{(\beta +1)/2}}dóndeβapagλ1{\displaystyle \beta \equiv a\cdot p^{\lambda -1}}

Observando que232mod293529{\displaystyle 23^{2}{\bmod {29^{3}}}\equiv 529}y observando queβ=7292{\displaystyle \beta =7\cdot 29^{2}}entonces

(5297+3)7292529(7292+1)/2mod2932436623{\displaystyle (529^{7}+3)^{7\cdot 29^{2}}\cdot 529^{(7\cdot 29^{2}+1)/2}{\bmod {29^{3}}}\equiv 24366\equiv -23}

Por poner otro ejemplo:23332mod2934142{\displaystyle 2333^{2}{\bmod {29^{3}}}\equiv 4142}y

(41427+3)72924142(7292+1)/2mod2932333{\displaystyle (4142^{7}+3)^{7\cdot 29^{2}}\cdot 4142^{(7\cdot 29^{2}+1)/2}{\bmod {29^{3}}}\equiv 2333}

Dickson también atribuye la siguiente ecuación a Tonelli:

incógnitamodpagλincógnitapagλ1do(pagλ2pagλ1+1)/2{\displaystyle X{\bmod {p^{\lambda }}}\equiv x^{p^{\lambda -1}}\cdot c^{(p^{\lambda }-2p^{\lambda -1}+1)/2}}dóndeincógnita2modpagλdo{\displaystyle X^{2}{\bmod {p^{\lambda }}}\equiv c}yincógnita2modpagdo{\displaystyle x^{2}{\bmod {p}}\equiv c};

Usandopag=23{\displaystyle p=23}y utilizando el módulo depag3{\displaystyle p^{3}}Los cálculos son los siguientes:

11152mod233=2191{\displaystyle 1115^{2}{\bmod {23^{3}}}=2191}

Primero, encuentra la raíz cuadrada modular modpag{\displaystyle p}lo cual se puede hacer mediante el algoritmo de Tonelli regular para una u otra raíz:

11152mod236{\displaystyle 1115^{2}{\bmod {23}}\equiv 6}y por lo tanto6mod2311{\displaystyle {\sqrt {6}}{\bmod {23}}\equiv 11}

Y aplicando la ecuación de Tonelli (véase más arriba):

112322191(2332232+1)/2mod2331115{\displaystyle 11^{23^{2}}\cdot 2191^{(23^{3}-2\cdot 23^{2}+1)/2}{\bmod {23^{3}}}\equiv 1115}

La referencia de Dickson [ 3 ] muestra claramente que el algoritmo de Tonelli funciona sobre módulos depagλ{\displaystyle p^{\lambda }}.

Notas

  1. Oded Goldreich, Complejidad computacional: una perspectiva conceptual , Cambridge University Press, 2008, pág. 588.
  2. Volker Diekert; Manfred Kufleitner; Gerhard Rosenberger; Ulrich Hertrampf (24 de mayo de 2016). Métodos algebraicos discretos: aritmética, criptografía, autómatas y grupos . De Gruyter. págs. 163-165 . ISBN  978-3-11-041632-9.
  3. 1 2 3 4 5 Leonard Eugene Dickson (1919). Historia de la teoría de los números . Vol. 1. Washington, Carnegie Institution of Washington. págs. 215-216 .  
  4. Daniel Shanks. Cinco algoritmos de teoría de números. Actas de la Segunda Conferencia de Manitoba sobre Matemáticas Numéricas. Págs. 51–70. 1973.
  5. Tornaría, Gonzalo (2002). "Raíces cuadradas módulo P". LATIN 2002: Informática teórica . Lecture Notes in Computer Science. Vol. 2286. pp. 430–434 . doi : 10.1007/3-540-45995-2_38 . ISBN   978-3-540-43400-9.
  6. Sutherland, Andrew V. (2011), "Cálculo de estructuras y logaritmos discretos en p-grupos abelianos finitos", Mathematics of Computation , 80 (273): 477–500 , arXiv : 0809.3413 , doi : 10.1090/s0025-5718-10-02356-2 , S2CID 13940949 
  7. Bach, Eric (1990), "Límites explícitos para pruebas de primalidad y problemas relacionados", Mathematics of Computation , 55 (191): 355–380 , doi : 10.2307/2008811 , JSTOR 2008811 
  8. Adleman, LM, K. Manders y G. Miller: 1977, «Sobre el enraizamiento en campos finitos». En: 18.º Simposio IEEE sobre Fundamentos de la Informática. págs. 175-177
  9. ^ "Accademia nazionale dei Lincei, Roma. Rediconti, (5), 1, 1892, 116-120".

Referencias

  • Ivan Niven ; Herbert S. Zuckerman; Hugh L. Montgomery (1991). Introducción a la teoría de los números (5.ª  ed.). Wiley. págs. 110-115 . ISBN  0-471-62546-9.
  • Daniel Shanks. Cinco algoritmos de teoría de números. Actas de la Segunda Conferencia de Manitoba sobre Matemáticas Numéricas. Págs.  51–70. 1973.
  • Alberto Tonelli, Bemerkung über die Auflösung quadratischer Congruenzen. Nachrichten von der Königlichen Gesellschaft der Wissenschaften und der Georg-Augusts-Universität zu Göttingen . Páginas.  344–346. 1891.
  • Gagan Tara Nanda - Matemáticas 115: El algoritmo RESSOL
  • Gonzalo Tornaria