Content deleted Content added
got rid of some "inline" TeX; added some nonbreakable spaces |
No edit summary |
||
(20 intermediate revisions by 17 users not shown) | |||
Line 1:
{{short description|Fast greatest common divisor algorithm}}
'''Lehmer's GCD algorithm''', named after [[Derrick Henry Lehmer]], is a
== Algorithm ==
Lehmer noted
Say we want to obtain the GCD of the two integers ''a'' and
* If ''b'' contains only one digit (in the chosen [[radix|base]], say ''
* If ''a'' and ''b'' differ in the length of digits, perform a division so that ''a'' and ''b'' are equal in length, with length equal to ''m''.
* ''Outer loop:'' Iterate until one of ''a'' or ''b'' is zero:
** Decrease ''m'' by one. Let ''x'' be the leading (most significant) digit in ''a'', ''x''
** Initialize a 2
*::<math>\textstyle
\begin{bmatrix} A & B & x\\ C & D & y \end{bmatrix}
</math> to an extended [[identity matrix]] <math>\textstyle
\begin{bmatrix} 1 & 0 & x \\ 0 & 1 & y\end{bmatrix},
</math>
*:and perform the euclidean algorithm simultaneously on the pairs (''x''
*:* Compute the quotients ''w''<sub>1</sub> of the long divisions of (''x'' + ''A'') by (''y'' + ''C'') and ''w''<sub>2</sub> of (''x'' + ''B'') by (''y'' + ''D'') respectively. Also let ''w'' be the (not computed) quotient from the current long division in the chain of long divisions of the euclidean algorithm.
*** If ''w''<sub>1</sub> ≠ ''w''<sub>2</sub>, then break out of the inner iteration. Else set ''w'' to ''w''<sub>1</sub> (or
*** Replace the current matrix
**::<math>\textstyle \begin{bmatrix} A & B & x \\ C & D & y \end{bmatrix}</math>
**: with the matrix product
**:: <math>\textstyle
\begin{bmatrix} 0 & 1 \\ 1 & -w \end{bmatrix}
\cdot
\begin{bmatrix} A & B & x \\ C & D & y \end{bmatrix}
= \begin{bmatrix} C & D &y \\ A - wC & B - wD & x-wy \end{bmatrix}
</math>
**:according to the matrix formulation of the extended euclidean algorithm.
***If ''B''
** If ''B''
** Set ''a'' to ''aA''
==References==
<references/>
* [[Kapil Hari Paranjape|Kapil Paranjape]], [http://www.imsc.res.in/~kapil/crypto/notes/node11.html Lehmer's Algorithm]▼
▲* Kapil Paranjape, [http://www.imsc.res.in/~kapil/crypto/notes/node11.html Lehmer's Algorithm]
{{Number-theoretic algorithms}}
{{DEFAULTSORT:Lehmer's Gcd Algorithm}}
[[Category:Number theoretic algorithms]]
|