This site is supported by donations to The OEIS Foundation.

Euclidean algorithm

From OeisWiki
Jump to: navigation, search


This article page is a stub, please help by expanding it.


The Euclidean algorithm (also called Euclid's algorithm) is an efficient method for computing the greatest common divisor (GCD), also known as the greatest common factor (GCF) or highest common factor (HCF). It is named after the Greek mathematician Euclid, who described it in Books VII and X of his Elements.[1]

Algorithmic efficiency

Number of steps

"A set of colored lines radiating outwards from the origin of an x–y coordinate system. Each line corresponds to a set of number pairs requiring the same number of steps in the Euclidean algorithm."
Number of steps in the Euclidean algorithm for
gcd (x, y)
. Red points indicate relatively few steps (quick), whereas yellow, green and blue points indicate successively more steps (slow). The largest blue area follows the line
y = ϕx
, where
ϕ
represents the Golden ratio.
The number of steps to calculate the GCD of two natural numbers,
a
and
b
, may be denoted by
T (a, b)
.[2] If
g
is the GCD of
a
and
b
, then
a = mg
and
b = ng
for two coprime numbers
m
and
n
. Then
as may be seen by dividing all the steps in the Euclidean algorithm by
g
.[3] By the same argument, the number of steps remains the same if
a
and
b
are multiplied by a common factor
w
Therefore, the number of steps
T
may vary dramatically between neighboring pairs of numbers, such as
T (a, b)
and
T (a, b + 1)
, depending on the size of the two GCDs.

The recursive nature of the Euclidean algorithm gives another equation

where
T (x, 0) = 0
by assumption.[2]

Worst case number of steps

If the Euclidean algorithm requires
N
steps for a pair of natural numbers
a   >   b   >   0
, the smallest values of
a
and
b
for which this is true are the Fibonacci numbers
FN  + 2
and
FN  + 1
, respectively.[4] This can be shown by induction.[5] If
N = 1
,
b
divides
a
with no remainder; the smallest natural numbers for which this is true is
b = 1
and
a = 2
, which are
F2
and
F3
, respectively. Now assume that the result holds for all values of
N
up to
M  −  1
. The first step of the
M
-step algorithm is

and the second step is

Since the algorithm is recursive, it required
M  −  1
steps to find
gcd (b, r0)
and their smallest values are
FM  + 1
and
FM
. The smallest value of
a
is therefore when
q0 = 1
, which gives
a = b + r0 = FM  + 1 + FM = FM  + 2
. This proof, published by Gabriel Lamé in 1844, represents the beginning of computational complexity theory,[6] and also the first practical application of the Fibonacci numbers.[4] This result suffices to show that the number of steps in Euclid's algorithm can never be more than five times the number of its digits (base 10).[7] For if the algorithm requires
N
steps, then
b
is greater than or equal to
FN + 1
which in turn is greater than or equal to
ϕN  − 1
, where
ϕ
is the golden ratio. Since
b   ≥   ϕN  − 1
, then
N  −  1   ≤   logϕ b
. Since
log10 ϕ   >  
1
5
,
N  −  1
5
  <   log10 ϕ logϕ b = log10 b.
Thus,
N   ≤   5 log10 b
. Thus, the Euclidean algorithm always needs less than
O (h)
divisions, where
h
is the number of digits in the smaller number
b
.

Applications

Factorization algorithms

Calculating a greatest common divisor is an essential step in several integer factorization algorithms,[8] such as Pollard's rho algorithm,[9] Shor's algorithm,[10] Dixon's factorization method[11] and the Lenstra elliptic curve factorization.[12] The Euclidean algorithm may be used to find this GCD efficiently. Continued fraction factorization uses continued fractions, which are determined using Euclid's algorithm.[13]

Domains

The Euclidean algorithm can be adapted to some other domains. Those domains in which the Euclidean algorithm can be adapted and implemented are then called Euclidean domains.

Notes

  1. Thomas L. Heath, The Thirteen Books of Euclid's Elements, 2nd ed. [Facsimile. Original publication: Cambridge University Press, 1925], 1956, Dover Publications.
  2. 2.0 2.1 Knuth, p. 344.
  3. Ore, p. 45.
  4. 4.0 4.1 Knuth, p. 343.
  5. Mollin, p. 21.
  6. LeVeque, p. 35.
  7. Mollin, pp. 21–22.
  8. Crandall R., Pomerance C. (2001). Prime Numbers: A Computational Perspective (1st ed.). New York: Springer-Verlag. pp. 225–349. ISBN 0-387-94777-9. 
  9. Knuth, pp. 369–371.
  10. Shor P.W. (1997). “Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer”. SIAM J. Sci. Statist. Comput. 26: pp. 1484. 
  11. Dixon J.D. (1981). “Asymptotically fast factorization of integers”. Math. Comput. 36 (153): pp. 255–260. doi:10.2307/2007743. 
  12. Lenstra Jr. H.W. (1987). “Factoring integers with elliptic curves”. Annals of Mathematics 126 (3): pp. 649–673. doi:10.2307/1971363. 
  13. Knuth, pp. 380–384.