Shanks-Tonelli algorithm
From Wikipedia, the free encyclopedia
The Shanks-Tonelli algorithm is used within modular arithmetic to solve a congruence of the form
where n is a quadratic residue (mod p), and p is prime; typically,
.
When
, it is much more efficient to use the following identity:
.
Shanks-Tonelli cannot be used for composite moduli, which is a problem equivalent to integer factorization.
Once you have solved the congruence for x the second solution is simply − xmod p.
If the Generalized Riemann hypothesis is true, the Shanks-Tonelli algorithm is guaranteed to run in polynomial time.
Contents |
[edit] The algorithm
Inputs: p, an odd prime. n, an integer which is a quadratic residue (mod p), meaning that the Legendre symbol (n|p) = 1.
Outputs: R, an integer satisfying
.
- Factor out powers of 2 from (p − 1), defining Q and S as: p − 1 = Q2S.
- Select a W such that the Legendre symbol (W|p) = −1 (that is, W should be a quadratic non-residue modulo p).
- Let
. - Let V = WQmod p.
- Loop:
- Find the lowest i,
, such that
. This can be done efficiently by starting with R2n − 1 and squaring (mod p) until the result is 1. - If i = 0, return R.
- Otherwise, let
and repeat the loop with R' as the new R.
- Find the lowest i,
[edit] Uses
Modular square roots are used in, for example, the quadratic sieve and related integer factorization algorithms.
[edit] Generalization
Shanks-Tonelli can be generalized to any cyclic group (instead of
) and to kth roots for arbitrary integer k, in particular to taking the kth root of an element of a finite field.
[edit] External links
- Quadratic Sieve Algorithm - contains a description of the Shanks-Tonelli algorithm.
|
|||||||||||||||||


