TheBestLinks.com
TheBestLinks.com
Euclidean algorithm, Algorithm, Euclidean domain, Field (mathematics) ... Print friendly version | Tell a friend
 
Navigation
Search
Toolbox

Euclidean algorithm

From TheBestLinks.com

The Euclidean algorithm (also called Euclid's algorithm) is an algorithm to determine the greatest common divisor (gcd) of two integers. It is one of the oldest algorithms known, since it appeared in Euclid's Elements around 300 BC. The algorithm does not require factoring.

Table of contents

Algorithm and implementation

Given two natural numbers a and b, check if b is zero. If yes, a is the gcd. If not, repeat the process using b and the remainder after integer division of a and b (written a modulus b below). The algorithm can be naturally expressed using tail recursion:

The following is wikicode, a proposed pseudocode for Wikipedia articles.

  function gcd(a, b)
      if b = 0
          return a
      else
          return gcd(b, a modulus b);

This can be rewritten iteratively as:

  function gcd(a, b)
      while b ≠ 0
          var t := b
          b := a modulus b
          a := t
      return a

For example, the gcd of 1071 and 1029 is computed by this algorithm to be 21 with the following steps:

a       b       t

1071102942
10294221
42210
210

By keeping track of the quotients occurring during the algorithm, one can also determine integers p and q with ap + bq = gcd(ab). This is known as the extended Euclidean algorithm.

These algorithms can be used in any context where division with remainder is possible. This includes rings of polynomials over a field as well as the ring of Gaussian integers, and in general all Euclidean domains.

Euclid originally formulated the problem geometrically, as the problem of finding a common "measure" for two line lengths, and his algorithm proceeded by repeated subtraction of the shorter from the longer segment. This is equivalent to the following implementation, which is considerably less efficient than the method explained above:

  function gcd(a, b)
      while a ≠ b
          if a > b
              a := a - b
          else
              b := b - a
      return a

Proof of correctness

It's not difficult to prove that this algorithm is correct. Suppose a and b are the numbers whose gcd has to be determined. And suppose the remainder of the division of a by b is t. Therefore a = qb + t where q is the quotient of the division. Now any common divisor of a and b also divides t (since t can be written as t = a − qb); similarly, any common divisor of b and t will also divide a. Thus the greatest common divisor of a and b is the same as the greatest comon divisor of b and t. Therefore it is enough if we continue the process with the numbers b and t. Since t is smaller in absolute value than b, we will reach t = 0 after finitely many steps.

Running time

When analyzing the running time of Euclid's algorithm, it turns out that the inputs requiring the most divisions are two successive Fibonacci numbers, and the worst case requires Θ(n) divisions, where n is the number of digits in the input (see Big O notation). However, it must be noted that the divisions themselves are not atomic operations, since the size of the operands could be as large as n digits. The actual running time is therefore O(n²).

Euclid's algorithm is widely used in practice, especially for small numbers, due to its simplicity. An alternative algorithm, the binary GCD algorithm, exploits the binary representation used by computers to avoid divisions and thereby increase efficiency, although it too is O(n²) asymptotically.

Continued fractions

The quotients that appear when the Euclidean algorithm is applied to the inputs a and b are precisely the numbers occurring in the continued fraction representation of a/b. Take for instance the example of a = 1071 and b = 1029 used above. Here is the calculation with highlighted quotients:

1071 = 1029 × 1 + 42
1029 = 42 × 24 + 21
42 = 21 × 2 + 0

From this, one can read off that

<math>\frac{1071}{1029} = \mathbf{1} + \frac{1}{\mathbf{24} + \frac{1}{\mathbf{2}}}<math>.

This method can even be used for real inputs a and b; if a/b is irrational, then the Euclidean algorithm won't terminate, but the computed sequence of quotients still represents the (now infinite) continued fraction representation of a/b.

See also: Least common multiple, Extended Euclidean algorithm

External links

  • Euclid's Algorithm (http://www.cut-the-knot.org/blue/Euclid.shtml): Algorithm, generalization, game and related topics


de:Euklidischer Algorithmus es:Algoritmo de Euclides fr:Algorithme_d'Euclide ja:ユークリッドの互除法 nl:Algoritme van Euclides pl:Algorytm Euklidesa

Related links


Top visited 0 of 0 links

[no links posted yet]

>> place link >>

Discussion

Last posted 0 of 0 messages

[no messages posted yet]

>> post message >>

Watch

You can add this article to your own "watchlist" and receive e-mail notification about all changes in this page.
 
   
Innovate it
This page was last modified 05:13, 27 Sep 2004.
  Content is available under GNU Free Documentation License 1.2.
Powered by MediaWiki