Kunerth's algorithm

Summary

Kunerth's algorithm is an algorithm for computing the modular square root of a given number.[1][2] The algorithm does not require the factorization of the modulus, and relies on modular operations that is often easy when the given number is prime.

Algorithm edit

To find y from a given value

 

it takes the following steps:

  1. find the modular square root of  . This step is quite easy, irrespectively of how big N when   is a prime.
  2. solve a quadratic equation associated with the modular square root of  . Most of Kunerth's examples in his original paper solve this equation by having C be a integer square and thus setting z to zero.
    Expand out the following equation to obtain the quadratic
     
    One can always make sure that the quadratic can be solved by adjusting the modulus N in the above equation. Thus
     
    will ensure a quadratic of  .
    One can then adjust F to make sure that   is a square. For large moduli, such as  , can have their square roots computed quickly via this method.
    The parameters of the polynomial expansion are quite flexible, in that   can be done, for instance. It is quite easy to choose X and Y such that   is a square. The modular square root of   can be taken this way.
  3. Having solved the associated quadratic equation we now have the variables w and set v = r (if C in the quadratic is a natural square).
  4. Solve for variables   and   the following equation:
     
  5. Obtain a value for X via factorization of the following polynomial:
     
    obtaining an answer like
     
  6. Obtain the modular square root by the equation. Remember to set X such that the term above is zero. Thus X would be 37/9 or -1/25.
     

Example edit

To obtain   first obtain  .

Then expand the polynomial:

 

into

 

Since, in this case the C term is a square, we take   and compute   (in general,  ).

Solve for   and   the following equation
 
getting the solution   and  . (There may be other pairs of solutions to this equation.)
Then factor the following polynomial:
 
obtaining
 
Then obtain the modular square root via
 
Verify that  

In the case that   has no answer, then   can be used instead.

See also edit

References edit

  1. ^ Adolf Kunerth, "Sitzungsberichte. Academie Der Wissenschaften" vol 78(2), 1878, p 327-338 (for quadratic equation algorithm), pp. 338–346 (for modular quadratic algorithm), available at Ernest Mayr Library, Harvard University
  2. ^ Leonard Eugene Dickson, "History of Numbers", vol 2, pp. 382–384.
  • Adolf Kunerth, "Sitzungsberichte. Academie Der Wissenschaften" vol 75, II, 1877, pp. 7–58
  • Adolf Kunerth, "Sitzungsberichte. Academie Der Wissenschaften" vol 82, II, 1880, pp. 342–375