Difference between revisions of "LCM & GCD"

From Department of Mathematics at UTSA
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 341: Line 341:
 
The ''greatest common divisor'' (GCD) of two nonzero integers {{mvar|a}} and {{mvar|b}}  is the greatest positive integer {{mvar|d}} such that {{mvar|d}} is a divisor of both {{mvar|a}} and {{mvar|b}}; that is, there are integers {{mvar|e}} and {{mvar|f}} such that {{math|1=''a'' = ''de''}} and {{math|1=''b'' = ''df''}}, and {{mvar|d}} is the largest such integer. The GCD of {{mvar|a}} and {{mvar|b}} is generally denoted {{math|gcd(''a'', ''b'')}}.  
 
The ''greatest common divisor'' (GCD) of two nonzero integers {{mvar|a}} and {{mvar|b}}  is the greatest positive integer {{mvar|d}} such that {{mvar|d}} is a divisor of both {{mvar|a}} and {{mvar|b}}; that is, there are integers {{mvar|e}} and {{mvar|f}} such that {{math|1=''a'' = ''de''}} and {{math|1=''b'' = ''df''}}, and {{mvar|d}} is the largest such integer. The GCD of {{mvar|a}} and {{mvar|b}} is generally denoted {{math|gcd(''a'', ''b'')}}.  
  
This definition also applies when one of {{mvar|a}} and {{mvar|b}} is zero. In this case, the GCD is the absolute value of the non zero integer: {{math|1=gcd(''a'', 0) = gcd(0, ''a'') = {{abs|''a''}}}}. This case is important as the terminating step of the Euclidean algorithm.
+
This definition also applies when one of {{mvar|a}} and {{mvar|b}} is zero. In this case, the GCD is the absolute value of the non zero integer: gcd(''a'', 0) = gcd(0, ''a'') = |''a''|. This case is important as the terminating step of the Euclidean algorithm.
  
The above definition cannot be used for defining {{math|gcd(0, 0)}}, since {{math|1=0 × ''n'' = 0}}, and zero thus has no greatest divisor. However, zero is its own greatest divisor if ''greatest'' is understood in the context of the divisibility relation, so {{math|gcd(0, 0)}} is commonly defined as 0. This preserves the usual identities for GCD, and in particular Bézout's identity, namely that {{math|gcd(''a'', ''b'')}} generates the same ideal as {{math|{{mset|''a'', ''b''}}}}. This convention is followed by many computer algebra systems. Nonetheless, some authors leave {{math|gcd(0, 0)}} undefined.
+
The above definition cannot be used for defining {{math|gcd(0, 0)}}, since {{math|1=0 × ''n'' = 0}}, and zero thus has no greatest divisor. However, zero is its own greatest divisor if ''greatest'' is understood in the context of the divisibility relation, so {{math|gcd(0, 0)}} is commonly defined as 0. This preserves the usual identities for GCD, and in particular Bézout's identity, namely that {{math|gcd(''a'', ''b'')}} generates the same ideal as {''a'', ''b''}. This convention is followed by many computer algebra systems. Nonetheless, some authors leave {{math|gcd(0, 0)}} undefined.
  
 
The GCD of {{mvar|a}} and {{mvar|b}} is their greatest positive common divisor in the preorder relation of divisibility. This means that the common divisors of {{mvar|a}} and {{mvar|b}} are exactly the divisors of their GCD. This is commonly proved by using either Euclid's lemma, the fundamental theorem of arithmetic, or the Euclidean algorithm. This is the meaning of "greatest" that is used for the generalizations of the concept of GCD.
 
The GCD of {{mvar|a}} and {{mvar|b}} is their greatest positive common divisor in the preorder relation of divisibility. This means that the common divisors of {{mvar|a}} and {{mvar|b}} are exactly the divisors of their GCD. This is commonly proved by using either Euclid's lemma, the fundamental theorem of arithmetic, or the Euclidean algorithm. This is the meaning of "greatest" that is used for the generalizations of the concept of GCD.
Line 363: Line 363:
  
 
=== Coprime numbers ===
 
=== Coprime numbers ===
Two numbers are called relatively prime, or [[coprime]], if their greatest common divisor equals 1. For example, 9 and 28 are Coprime.
+
Two numbers are called relatively prime, or coprime, if their greatest common divisor equals 1. For example, 9 and 28 are Coprime.
  
 
=== A geometric view ===
 
=== A geometric view ===
Line 384: Line 384:
  
 
=== Using prime factorizations ===
 
=== Using prime factorizations ===
Greatest common divisors can be computed by determining the [[prime factorization]]s of the two numbers and comparing factors. For example, to compute gcd(48,&nbsp;180), we find the prime factorizations 48&nbsp;=&nbsp;2<sup>4</sup>&nbsp;·&nbsp;3<sup>1</sup> and 180&nbsp;=&nbsp;2<sup>2</sup>&nbsp;·&nbsp;3<sup>2</sup>&nbsp;·&nbsp;5<sup>1</sup>; the GCD is then 2<sup>min(4,2)</sup>&nbsp;·&nbsp;3<sup>min(1,2)</sup>&nbsp;·&nbsp;5<sup>min(0,1)</sup> = 2<sup>2</sup>&nbsp;·&nbsp;3<sup>1</sup>&nbsp;·&nbsp;5<sup>0</sup>  =&nbsp;12, as shown in the Venn diagram. The corresponding LCM is then  
+
Greatest common divisors can be computed by determining the prime factorizations of the two numbers and comparing factors. For example, to compute gcd(48,&nbsp;180), we find the prime factorizations 48&nbsp;=&nbsp;2<sup>4</sup>&nbsp;·&nbsp;3<sup>1</sup> and 180&nbsp;=&nbsp;2<sup>2</sup>&nbsp;·&nbsp;3<sup>2</sup>&nbsp;·&nbsp;5<sup>1</sup>; the GCD is then 2<sup>min(4,2)</sup>&nbsp;·&nbsp;3<sup>min(1,2)</sup>&nbsp;·&nbsp;5<sup>min(0,1)</sup> = 2<sup>2</sup>&nbsp;·&nbsp;3<sup>1</sup>&nbsp;·&nbsp;5<sup>0</sup>  =&nbsp;12, as shown in the Venn diagram. The corresponding LCM is then  
 
2<sup>max(4,2)</sup>&nbsp;·&nbsp;3<sup>max(1,2)</sup>&nbsp;·&nbsp;5<sup>max(0,1)</sup> =  
 
2<sup>max(4,2)</sup>&nbsp;·&nbsp;3<sup>max(1,2)</sup>&nbsp;·&nbsp;5<sup>max(0,1)</sup> =  
 
2<sup>4</sup>&nbsp;·&nbsp;3<sup>2</sup>&nbsp;·&nbsp;5<sup>1</sup>  =&nbsp;720.
 
2<sup>4</sup>&nbsp;·&nbsp;3<sup>2</sup>&nbsp;·&nbsp;5<sup>1</sup>  =&nbsp;720.
Line 404: Line 404:
  
 
===Euclidean algorithm===
 
===Euclidean algorithm===
[[File:The Great Common Divisor of 62 and 36 is 2.ogv|thumb|Animation showing an application of the Euclidean algorithm to find the greatest common divisor of 62 and 36, which is 2.]]
 
 
 
A more efficient method is the ''Euclidean algorithm'', a variant in which the difference of the two numbers {{mvar|a}} and {{mvar|b}} is replaced by the ''remainder'' of the Euclidean division (also called ''division with remainder'') of {{mvar|a}} by {{mvar|b}}.  
 
A more efficient method is the ''Euclidean algorithm'', a variant in which the difference of the two numbers {{mvar|a}} and {{mvar|b}} is replaced by the ''remainder'' of the Euclidean division (also called ''division with remainder'') of {{mvar|a}} by {{mvar|b}}.  
  
Line 470: Line 468:
 
:<math>\gcd(a,b)=\sum\limits_{k=1}^a \exp (2\pi ikb/a) \cdot \sum\limits_{d\left| a\right.} \frac{c_d (k)}{d} </math>
 
:<math>\gcd(a,b)=\sum\limits_{k=1}^a \exp (2\pi ikb/a) \cdot \sum\limits_{d\left| a\right.} \frac{c_d (k)}{d} </math>
  
is an [[entire function]] in the variable ''b'' for all positive integers ''a'' where ''c''<sub>''d''</sub>(''k'') is Ramanujan's sum.
+
is an entire function in the variable ''b'' for all positive integers ''a'' where ''c''<sub>''d''</sub>(''k'') is Ramanujan's sum.
  
 
=== Complexity===
 
=== Complexity===

Latest revision as of 11:47, 11 December 2021

Least common multiple

A Venn diagram showing the least common multiples of combinations of 2, 3, 4, 5 and 7 (6 is skipped as it is 2 × 3, both of which are already represented).
For example, a card game which requires its cards to be divided equally among up to 5 players requires at least 60 cards, the number at the intersection of the 2, 3, 4, and 5 sets, but not the 7 set.

In arithmetic and number theory, the least common multiple, lowest common multiple, or smallest common multiple of two integers a and b, usually denoted by lcm(ab), is the smallest positive integer that is divisible by both a and b. Since division of integers by zero is undefined, this definition has meaning only if a and b are both different from zero. However, some authors define lcm(a,0) as 0 for all a, which is the result of taking the lcm to be the least upper bound in the lattice of divisibility.

The lcm is the "lowest common denominator" (lcd) that can be used before fractions can be added, subtracted or compared. The lcm of more than two integers is also well-defined: it is the smallest positive integer that is divisible by each of them.

Overview

A multiple of a number is the product of that number and an integer. For example, 10 is a multiple of 5 because 5 × 2 = 10, so 10 is divisible by 5 and 2. Because 10 is the smallest positive integer that is divisible by both 5 and 2, it is the least common multiple of 5 and 2. By the same principle, 10 is the least common multiple of −5 and −2 as well.

Notation

The least common multiple of two integers a and b is denoted as lcm(a, b). Some older textbooks use [a, b].

Example

Multiples of 4 are:

Multiples of 6 are:

Common multiples of 4 and 6 are the numbers that are in both lists:

In this list, the smallest number is 12. Hence, the least common multiple is 12.

Applications

When adding, subtracting, or comparing simple fractions, the least common multiple of the denominators (often called the lowest common denominator) is used, because each of the fractions can be expressed as a fraction with this denominator. For example,

where the denominator 42 was used, because it is the least common multiple of 21 and 6.

Gears problem

Suppose there are two meshing gears in a machine, having m and n teeth, respectively, and the gears are marked by a line segment drawn from the center of the first gear to the center of the second gear. When the gears begin rotating, the number of rotations the first gear must complete to realign the line segment can be calculated by using . The first gear must complete rotations for the realignment. By that time, the second gear will have made rotations.

Planetary alignment

Suppose there are three planets revolving around a star which take l, m and n units of time, respectively, to complete their orbits. Assume that l, m and n are integers. Assuming the planets started moving around the star after an initial linear alignment, all the planets attain a linear alignment again after units of time. At this time, the first, second and third planet will have completed , and orbits, respectively, around the star.

Calculation

Using the greatest common divisor

The following formula reduces the problem of computing the least common multiple to the problem of computing the greatest common divisor (gcd), also known as the greatest common factor:

This formula is also valid when exactly one of a and b is 0, since gcd(a, 0) = |a|. However, if both a and b are 0, this formula would cause division by zero; lcm(0, 0) = 0 is a special case.

There are fast algorithms for computing the gcd that do not require the numbers to be factored, such as the Euclidean algorithm. To return to the example above,

Because gcd(a, b) is a divisor of both a and b, it is more efficient to compute the lcm by dividing before multiplying:

This reduces the size of one input for both the division and the multiplication, and reduces the required storage needed for intermediate results (that is, overflow in the a×b computation). Because gcd(a, b) is a divisor of both a and b, the division is guaranteed to yield an integer, so the intermediate result can be stored in an integer. Implemented this way, the previous example becomes:

Using prime factorization

The unique factorization theorem indicates that every positive integer greater than 1 can be written in only one way as a product of prime numbers. The prime numbers can be considered as the atomic elements which, when combined, make up a composite number.

For example:

Here, the composite number 90 is made up of one atom of the prime number 2, two atoms of the prime number 3, and one atom of the prime number 5.

This fact can be used to find the lcm of a set of numbers.

Example: lcm(8,9,21)

Factor each number and express it as a product of prime number powers.

The lcm will be the product of multiplying the highest power of each prime number together. The highest power of the three prime numbers 2, 3, and 7 is 23, 32, and 71, respectively. Thus,

This method is not as efficient as reducing to the greatest common divisor, since there is no known general efficient algorithm for integer factorization.

The same method can also be illustrated with a Venn diagram as follows, with the prime factorization of each of the two numbers demonstrated in each circle and all factors they share in common in the intersection. The lcm then can be found by multiplying all of the prime numbers in the diagram.

Here is an example:

48 = 2 × 2 × 2 × 2 × 3,
180 = 2 × 2 × 3 × 3 × 5,

sharing two "2"s and a "3" in common:

Least common multiple.svg
Least common multiple = 2 × 2 × 2 × 2 × 3 × 3 × 5 = 720
Greatest common divisor = 2 × 2 × 3 = 12

This also works for the greatest common divisor (gcd), except that instead of multiplying all of the numbers in the Venn diagram, one multiplies only the prime factors that are in the intersection. Thus the gcd of 48 and 180 is 2 × 2 × 3 = 12.

Using a simple algorithm

This method works easily for finding the lcm of several integers.

Let there be a finite sequence of positive integers X = (x1, x2, ..., xn), n > 1. The algorithm proceeds in steps as follows: on each step m it examines and updates the sequence X(m) = (x1(m), x2(m), ..., xn(m)), X(1) = X, where X(m) is the mth iteration of X, that is, X at step m of the algorithm, etc. The purpose of the examination is to pick the least (perhaps, one of many) element of the sequence X(m). Assuming xk0(m) is the selected element, the sequence X(m+1) is defined as

xk(m+1) = xk(m), kk0
xk0(m+1) = xk0(m) + xk0(1).

In other words, the least element is increased by the corresponding x whereas the rest of the elements pass from X(m) to X(m+1) unchanged.

The algorithm stops when all elements in sequence X(m) are equal. Their common value L is exactly lcm(X).

For example, if X = X(1) = (3, 4, 6), the steps in the algorithm produce:

X(2) = (6, 4, 6)
X(3) = (6, 8, 6)
X(4) = (6, 8, 12) - by choosing the second 6
X(5) = (9, 8, 12)
X(6) = (9, 12, 12)
X(7) = (12, 12, 12) so lcm = 12.

Using the table-method

This method works for any number of numbers. One begins by listing all of the numbers vertically in a table (in this example 4, 7, 12, 21, and 42):

4
7
12
21
42

The process begins by dividing all of the numbers by 2. If 2 divides any of them evenly, write 2 in a new column at the top of the table, and the result of division by 2 of each number in the space to the right in this new column. If a number is not evenly divisible, just rewrite the number again. If 2 does not divide evenly into any of the numbers, repeat this procedure with the next largest prime number, 3 (see below).

× 2
4 2
7 7
12 6
21 21
42 21

Now, assuming that 2 did divide at least one number (as in this example), check if 2 divides again:

× 2 2
4 2 1
7 7 7
12 6 3
21 21 21
42 21 21

Once 2 no longer divides any number in the current column, repeat the procedure by dividing by the next larger prime, 3. Once 3 no longer divides, try the next larger primes, 5 then 7, etc. The process ends when all of the numbers have been reduced to 1 (the column under the last prime divisor consists only of 1's).

× 2 2 3 7
4 2 1 1 1
7 7 7 7 1
12 6 3 1 1
21 21 21 7 1
42 21 21 7 1

Now, multiply the numbers in the top row to obtain the lcm. In this case, it is 2 × 2 × 3 × 7 = 84.

As a general computational algorithm, the above is quite inefficient. One would never want to implement it in software: it takes too many steps and requires too much storage space. A far more efficient numerical algorithm can be obtained by using Euclid's algorithm to compute the gcd first, and then obtaining the lcm by division.

Formulas

Fundamental theorem of arithmetic

According to the fundamental theorem of arithmetic, a positive integer is the product of prime numbers, and this representation is unique up to the ordering of prime numbers:

where the exponents n2, n3, ... are non-negative integers; for example, 84 = 22 31 50 71 110 130 ...

Given two positive integers and , their least common multiple and greatest common divisor are given by the formulas

and

Since

this gives

In fact, every rational number can be written uniquely as the product of primes, if negative exponents are allowed. When this is done, the above formulas remain valid. For example:

Lattice-theoretic

The positive integers may be partially ordered by divisibility: if a divides b (that is, if b is an integer multiple of a) write ab (or equivalently, ba). (Note that the usual magnitude-based definition of ≤ is not used here.)

Under this ordering, the positive integers become a lattice, with meet given by the gcd and join given by the lcm. The proof is straightforward, if a bit tedious; it amounts to checking that lcm and gcd satisfy the axioms for meet and join. Putting the lcm and gcd into this more general context establishes a duality between them:

If a formula involving integer variables, gcd, lcm, ≤ and ≥ is true, then the formula obtained by switching gcd with lcm and switching ≥ with ≤ is also true. (Remember ≤ is defined as divides).

The following pairs of dual formulas are special cases of general lattice-theoretic identities.

Commutative laws
    
Associative laws
    
Absorption laws
Idempotent laws
    
Define divides in terms of lcm and gcd

It can also be shown that this lattice is distributive; that is, lcm distributes over gcd and gcd distributes over lcm:

This identity is self-dual:

Other

  • Let D be the product of ω(D) distinct prime numbers (that is, D is squarefree).

Then

where the absolute bars || denote the cardinality of a set.

  • If none of is zero, then

In commutative rings

The least common multiple can be defined generally over commutative rings as follows: Let a and b be elements of a commutative ring R. A common multiple of a and b is an element m of R such that both a and b divide m (that is, there exist elements x and y of R such that ax = m and by = m). A least common multiple of a and b is a common multiple that is minimal, in the sense that for any other common multiple n of a and b, m divides n.

In general, two elements in a commutative ring can have no least common multiple or more than one. However, any two least common multiples of the same pair of elements are associates. In a unique factorization domain, any two elements have a least common multiple. In a principal ideal domain, the least common multiple of a and b can be characterised as a generator of the intersection of the ideals generated by a and b (the intersection of a collection of ideals is always an ideal).

Greatest common divisor

In mathematics, the greatest common divisor (GCD) of two or more integers, which are not all zero, is the largest positive integer that divides each of the integers. For two integers x, y, the greatest common divisor of x and y is denoted . For example, the GCD of 8 and 12 is 4, that is, .

In the name "greatest common divisor", the adjective "greatest" may be replaced by "highest", and the word "divisor" may be replaced by "factor", so that other names include highest common factor (hcf), etc. Historically, other names for the same concept have included greatest common measure.

This notion can be extended to polynomials (see Polynomial greatest common divisor) and other commutative rings (see In commutative rings below).

Overview

Definition

The greatest common divisor (GCD) of two nonzero integers a and b is the greatest positive integer d such that d is a divisor of both a and b; that is, there are integers e and f such that a = de and b = df, and d is the largest such integer. The GCD of a and b is generally denoted gcd(a, b).

This definition also applies when one of a and b is zero. In this case, the GCD is the absolute value of the non zero integer: gcd(a, 0) = gcd(0, a) = |a|. This case is important as the terminating step of the Euclidean algorithm.

The above definition cannot be used for defining gcd(0, 0), since 0 × n = 0, and zero thus has no greatest divisor. However, zero is its own greatest divisor if greatest is understood in the context of the divisibility relation, so gcd(0, 0) is commonly defined as 0. This preserves the usual identities for GCD, and in particular Bézout's identity, namely that gcd(a, b) generates the same ideal as {a, b}. This convention is followed by many computer algebra systems. Nonetheless, some authors leave gcd(0, 0) undefined.

The GCD of a and b is their greatest positive common divisor in the preorder relation of divisibility. This means that the common divisors of a and b are exactly the divisors of their GCD. This is commonly proved by using either Euclid's lemma, the fundamental theorem of arithmetic, or the Euclidean algorithm. This is the meaning of "greatest" that is used for the generalizations of the concept of GCD.

Example

The number 54 can be expressed as a product of two integers in several different ways:

Thus the complete list of divisors of 54 is . Similarly, the divisors of 24 are . The numbers that these two lists have in common are the common divisors of 54 and 24, that is,

Of these, the greatest is 6, so it is the greatest common divisor:

Computing all divisors of the two numbers in this way is usually not efficient, especially for large numbers that have many divisors. Much more efficient methods are described in Calculation.

Coprime numbers

Two numbers are called relatively prime, or coprime, if their greatest common divisor equals 1. For example, 9 and 28 are Coprime.

A geometric view

"Tall, slender rectangle divided into a grid of squares. The rectangle is two squares wide and five squares tall."
A 24-by-60 rectangle is covered with ten 12-by-12 square tiles, where 12 is the GCD of 24 and 60. More generally, an a-by-b rectangle can be covered with square tiles of side length c only if c is a common divisor of a and b.

For example, a 24-by-60 rectangular area can be divided into a grid of: 1-by-1 squares, 2-by-2 squares, 3-by-3 squares, 4-by-4 squares, 6-by-6 squares or 12-by-12 squares. Therefore, 12 is the greatest common divisor of 24 and 60. A 24-by-60 rectangular area can thus be divided into a grid of 12-by-12 squares, with two squares along one edge (24/12 = 2) and five squares along the other (60/12 = 5).

Applications

Reducing fractions

The greatest common divisor is useful for reducing fractions to the lowest terms. For example, gcd(42, 56) = 14, therefore,

Least common multiple

The greatest common divisor can be used to find the least common multiple of two numbers when the greatest common divisor is known, using the relation,

Calculation

Using prime factorizations

Greatest common divisors can be computed by determining the prime factorizations of the two numbers and comparing factors. For example, to compute gcd(48, 180), we find the prime factorizations 48 = 24 · 31 and 180 = 22 · 32 · 51; the GCD is then 2min(4,2) · 3min(1,2) · 5min(0,1) = 22 · 31 · 50 = 12, as shown in the Venn diagram. The corresponding LCM is then 2max(4,2) · 3max(1,2) · 5max(0,1) = 24 · 32 · 51 = 720.

Least common multiple.svg

In practice, this method is only feasible for small numbers, as computing prime factorizations takes too long.

Euclid's algorithm

The method introduced by Euclid for computing greatest common divisors is based on the fact that, given two positive integers a and b such that a > b, the common divisors of a and b are the same as the common divisors of ab and b.

So, Euclid's method for computing the greatest common divisor of two positive integers consists of replacing the larger number by the difference of the numbers, and repeating this until the two numbers are equal: that is their greatest common divisor.

For example, to compute gcd(48,18), one proceeds as follows:

So gcd(48, 18) = 6.

This method can be very slow if one number is much larger than the other. So, the variant that follows is generally preferred.

Euclidean algorithm

A more efficient method is the Euclidean algorithm, a variant in which the difference of the two numbers a and b is replaced by the remainder of the Euclidean division (also called division with remainder) of a by b.

Denoting this remainder as a mod b, the algorithm replaces (a, b) by (b, a mod b) repeatedly until the pair is (d, 0), where d is the greatest common divisor.

For example, to compute gcd(48,18), the computation is as follows:

This again gives gcd(48, 18) = 6.

Lehmer's GCD algorithm

Lehmer's algorithm is based on the observation that the initial quotients produced by Euclid's algorithm can be determined based on only the first few digits; this is useful for numbers that are larger than a computer word. In essence, one extracts initial digits, typically forming one or two computer words, and runs Euclid's algorithms on these smaller numbers, as long as it is guaranteed that the quotients are the same with those that would be obtained with the original numbers. Those quotients are collected into a small 2-by-2 transformation matrix (that is a matrix of single-word integers), for using them all at once for reducing the original numbers. This process is repeated until numbers are small enough that the binary algorithm (see below) is more efficient.

This algorithm improves speed, because it reduces the number of operations on very large numbers, and can use hardware arithmetic for most operations. In fact, most of the quotients are very small, so a fair number of steps of the Euclidean algorithm can be collected in a 2-by-2 matrix of single-word integers. When Lehmer's algorithm encounters a quotient that is too large, it must fall back to one iteration of Euclidean algorithm, with a Euclidean division of large numbers.

Binary GCD algorithm

The binary GCD algorithm uses only subtraction and division by 2. The method is as follows: Let a and b be the two non-negative integers. Let the integer d be 0. There are five possibilities:

  • a = b.

As gcd(a, a) = a, the desired GCD is a × 2d (as a and b are changed in the other cases, and d records the number of times that a and b have been both divided by 2 in the next step, the GCD of the initial pair is the product of a and 2d).

  • Both a and b are even.

Then 2 is a common divisor. Divide both a and b by 2, increment d by 1 to record the number of times 2 is a common divisor and continue.

  • a is even and b is odd.

Then 2 is not a common divisor. Divide a by 2 and continue.

  • a is odd and b is even.

Then 2 is not a common divisor. Divide b by 2 and continue.

  • Both a and b are odd.

As gcd(a,b) = gcd(b,a), if a < b then exchange a and b. The number c = ab is positive and smaller than a. Any number that divides a and b must also divide c so every common divisor of a and b is also a common divisor of b and c. Similarly, a = b + c and every common divisor of b and c is also a common divisor of a and b. So the two pairs (a, b) and (b, c) have the same common divisors, and thus gcd(a,b) = gcd(b,c). Moreover, as a and b are both odd, c is even, the process can be continued with the pair (a, b) replaced by the smaller numbers (c/2, b) without changing the GCD.

Each of the above steps reduces at least one of a and b while leaving them non-negative and so can only be repeated a finite number of times. Thus eventually the process results in a = b, the stopping case. Then the GCD is a × 2d.

Example: (a, b, d) = (48, 18, 0) → (24, 9, 1) → (12, 9, 1) → (6, 9, 1) → (3, 9, 1) → (3, 3, 1) ; the original GCD is thus the product 6 of 2d = 21 and a= b= 3.

The binary GCD algorithm is particularly easy to implement on binary computers. Its computational complexity is

The computational complexity is usually given in terms of the length n of the input. Here, this length is and the complexity is thus

.

Other methods

or Thomae's function. Hatching at bottom indicates ellipses (i.e. omission of dots due to the extremely high density).

If a and b are both nonzero, the greatest common divisor of a and b can be computed by using least common multiple (LCM) of a and b:

,

but more commonly the LCM is computed from the GCD.

Using Thomae's function f,

which generalizes to a and b rational numbers or commensurable real numbers.

Keith Slavin has shown that for odd a ≥ 1:

which is a function that can be evaluated for complex b. Wolfgang Schramm has shown that

is an entire function in the variable b for all positive integers a where cd(k) is Ramanujan's sum.

Complexity

The computational complexity of the computation of greatest common divisors has been widely studied. If one uses the Euclidean algorithm and the elementary algorithms for multiplication and division, the computation of the greatest common divisor of two integers of at most n bits is This means that the computation of greatest common divisor has, up to a constant factor, the same complexity as the multiplication.

However, if a fast multiplication algorithm is used, one may modify the Euclidean algorithm for improving the complexity, but the computation of a greatest common divisor becomes slower than the multiplication. More precisely, if the multiplication of two integers of n bits takes a time of T(n), then the fastest known algorithm for greatest common divisor has a complexity This implies that the fastest known algorithm has a complexity of

Previous complexities are valid for the usual models of computation, specifically multitape Turing machines and random-access machines.

The computation of the greatest common divisors belongs thus to the class of problems solvable in quasilinear time. A fortiori, the corresponding decision problem belongs to the class P of problems solvable in polynomial time. The GCD problem is not known to be in NC, and so there is no known way to parallelize it efficiently; nor is it known to be P-complete, which would imply that it is unlikely to be possible to efficiently parallelize GCD computation. Shallcross et al. showed that a related problem (EUGCD, determining the remainder sequence arising during the Euclidean algorithm) is NC-equivalent to the problem of integer linear programming with two variables; if either problem is in NC or is P-complete, the other is as well. Since NC contains NL, it is also unknown whether a space-efficient algorithm for computing the GCD exists, even for nondeterministic Turing machines.

Although the problem is not known to be in NC, parallel algorithms asymptotically faster than the Euclidean algorithm exist; the fastest known deterministic algorithm is by Chor and Goldreich, which (in the CRCW-PRAM model) can solve the problem in O(n/log n) time with n1+ε processors. Randomized algorithms can solve the problem in O((log n)2) time on processors (this is superpolynomial).

Properties

  • Every common divisor of a and b is a divisor of gcd(a, b).
  • gcd(a, b), where a and b are not both zero, may be defined alternatively and equivalently as the smallest positive integer d which can be written in the form d = ap + bq, where p and q are integers. This expression is called Bézout's identity. Numbers p and q like this can be computed with the extended Euclidean algorithm.
  • gcd(a, 0) = |a|, for a ≠ 0, since any number is a divisor of 0, and the greatest divisor of a is |a|. This is usually used as the base case in the Euclidean algorithm.
  • If a divides the product bc, and gcd(a, b) = d, then a/d divides c.
  • If m is a non-negative integer, then gcd(ma, mb) = m⋅gcd(a, b).
  • If m is any integer, then gcd(a + mb, b) = gcd(a, b).
  • If m is a positive common divisor of a and b, then gcd(a/m, b/m) = gcd(a, b)/m.
  • The GCD is a multiplicative function in the following sense: if a1 and a2 are relatively prime, then gcd(a1a2, b) = gcd(a1, b)⋅gcd(a2, b). In particular, recalling that GCD is a positive integer valued function we obtain that gcd(a, bc) = 1 if and only if gcd(a, b) = 1 and gcd(a, c) = 1.
  • The GCD is a commutative function: gcd(a, b) = gcd(b, a).
  • The GCD is an associative function: gcd(a, gcd(b, c)) = gcd(gcd(a, b), c). Thus gcd(a, b, c, ...) can be used to denote the GCD of multiple arguments.
  • gcd(a, b) is closely related to the least common multiple lcm(a, b): we have
    gcd(a, b)⋅lcm(a, b) = |ab|.
This formula is often used to compute least common multiples: one first computes the GCD with Euclid's algorithm and then divides the product of the given numbers by their GCD.
  • The following versions of distributivity hold true:
    gcd(a, lcm(b, c)) = lcm(gcd(a, b), gcd(a, c))
    lcm(a, gcd(b, c)) = gcd(lcm(a, b), lcm(a, c)).
  • If we have the unique prime factorizations of a = p1e1 p2e2 ⋅⋅⋅ pmem and b = p1f1 p2f2 ⋅⋅⋅ pmfm where ei ≥ 0 and fi ≥ 0, then the GCD of a and b is
    gcd(a,b) = p1min(e1,f1) p2min(e2,f2) ⋅⋅⋅ pmmin(em,fm).
  • It is sometimes useful to define gcd(0, 0) = 0 and lcm(0, 0) = 0 because then the natural numbers become a complete distributive lattice with GCD as meet and LCM as join operation. This extension of the definition is also compatible with the generalization for commutative rings given below.
  • In a Cartesian coordinate system, gcd(a, b) can be interpreted as the number of segments between points with integral coordinates on the straight line segment joining the points (0, 0) and (a, b).
  • For non-negative integers a and b, where a and b are not both zero, provable by considering the Euclidean algorithm in base n:
    gcd(na − 1, nb − 1) = ngcd(a,b) − 1.
  • An identity involving Euler's totient function:
  • where is the p-adic valuation.

Probabilities and expected value

In 1972, James E. Nymann showed that k integers, chosen independently and uniformly from {1, ..., n}, are coprime with probability 1/ζ(k) as n goes to infinity, where ζ refers to the Riemann zeta function. (See coprime for a derivation.) This result was extended in 1987 to show that the probability that k random integers have greatest common divisor d is d−k/ζ(k).

Using this information, the expected value of the greatest common divisor function can be seen (informally) to not exist when k = 2. In this case the probability that the GCD equals d is d−2/ζ(2), and since ζ(2) = π2/6 we have

This last summation is the harmonic series, which diverges. However, when k ≥ 3, the expected value is well-defined, and by the above argument, it is

For k = 3, this is approximately equal to 1.3684. For k = 4, it is approximately 1.1106.

In commutative rings

The notion of greatest common divisor can more generally be defined for elements of an arbitrary commutative ring, although in general there need not exist one for every pair of elements.

If R is a commutative ring, and a and b are in R, then an element d of R is called a common divisor of a and b if it divides both a and b (that is, if there are elements x and y in R such that d·x = a and d·y = b). If d is a common divisor of a and b, and every common divisor of a and b divides d, then d is called a greatest common divisor of a and b.

With this definition, two elements a and b may very well have several greatest common divisors, or none at all. If R is an integral domain then any two GCD's of a and b must be associate elements, since by definition either one must divide the other; indeed if a GCD exists, any one of its associates is a GCD as well. Existence of a GCD is not assured in arbitrary integral domains. However, if R is a unique factorization domain, then any two elements have a GCD, and more generally this is true in GCD domains. If R is a Euclidean domain in which euclidean division is given algorithmically (as is the case for instance when R = F[X] where F is a field, or when R is the ring of Gaussian integers), then greatest common divisors can be computed using a form of the Euclidean algorithm based on the division procedure.

The following is an example of an integral domain with two elements that do not have a GCD:

The elements 2 and 1 +  are two maximal common divisors (that is, any common divisor which is a multiple of 2 is associated to 2, the same holds for 1 + , but they are not associated, so there is no greatest common divisor of a and b.

Corresponding to the Bézout property we may, in any commutative ring, consider the collection of elements of the form pa + qb, where p and q range over the ring. This is the ideal generated by a and b, and is denoted simply (ab). In a ring all of whose ideals are principal (a principal ideal domain or PID), this ideal will be identical with the set of multiples of some ring element d; then this d is a greatest common divisor of a and b. But the ideal (ab) can be useful even when there is no greatest common divisor of a and b. (Indeed, Ernst Kummer used this ideal as a replacement for a GCD in his treatment of Fermat's Last Theorem, although he envisioned it as the set of multiples of some hypothetical, or ideal, ring element d, whence the ring-theoretic term.)

Licensing

Content obtained and/or adapted from: