Greatest common divisor


In mathematics, the greatest common divisor of two or more integers, which are not all zero, is the largest positive integer that divides each of the integers. For example, the gcd of 8 and 12 is 4.
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 greatest common factor, etc. Historically, other names for the same concept have included greatest common measure.
This notion can be extended to polynomials and other commutative rings.

Overview

Notation

In this article we will denote the greatest common divisor of two integers a and b as gcd. Some authors use.

Example

What is the greatest common divisor of 54 and 24?
The number 54 can be expressed as a product of two integers in several different ways:
Thus the divisors of 54 are:
Similarly, the divisors of 24 are:
The numbers that these two lists share in common are the common divisors of 54 and 24:
The greatest of these is 6. That is, the greatest common divisor of 54 and 24. One writes:

Coprime numbers

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

A geometric view

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 be divided into a grid of 12-by-12 squares, with two squares along one edge and five squares along the other.

Applications

Reducing fractions

The greatest common divisor is useful for reducing fractions to be in lowest terms. For example, gcd = 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 in principle be computed by determining the prime factorizations of the two numbers and comparing factors, as in the following example: to compute gcd, we find the prime factorizations 18 = 2 · 32 and 84 = 22 · 3 · 7 and the "overlap" of the two expressions is 2 · 3; so gcd = 6. In practice, this method is only feasible for small numbers; computing prime factorizations in general takes far too long.
Here is another concrete example, illustrated by a Venn diagram. Suppose it is desired to find the greatest common divisor of 48 and 180. First, find the prime factorizations of the two numbers:
What they share in common is two "2"s and a "3":

Euclid's algorithm

A much more efficient method is the Euclidean algorithm, which uses a division algorithm such as long division in combination with the observation that the gcd of two numbers also divides their difference. To compute gcd, divide 48 by 18 to get a quotient of 2 and a remainder of 12. Then divide 18 by 12 to get a quotient of 1 and a remainder of 6. Then divide 12 by 6 to get a remainder of 0, which means that 6 is the gcd. We ignored the quotient in each step except to notice when the remainder reached 0, signalling that we had arrived at the answer. Formally the algorithm can be described as:
where
If the arguments are both greater than zero then the algorithm can be written in more elementary terms as follows:

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, for using them all at once for reducing the original numbers. This process is repeated until numbers have a size for which the binary algorithm is more efficient.
This algorithm improves speed, because it reduces the number of operations on very large numbers and can use the speed of 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 too large quotient, 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:
As gcd = a, the desired gcd is a × 2d.
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.
Then 2 is not a common divisor. Divide a by 2 and continue.
Then 2 is not a common divisor. Divide b by 2 and continue.
As gcd = gcd, 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 and have the same common divisors, and thus gcd = gcd. Moreover, as a and b are both odd, c is even, the process can be continued with the pair replaced by the smaller numbers 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: = → → → → → ; 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 of the input. Here, this length is and the complexity is thus

Other methods

If a and b are both nonzero, the greatest common divisor of a and b can be computed by using least common multiple 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 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 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 bits takes a time of, 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 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 can solve the problem in time with processors. Randomized algorithms can solve the problem in time on processors .

Properties

In 1972, James E. Nymann showed that k integers, chosen independently and uniformly from, are coprime with probability 1/ζ as n goes to infinity, where ζ refers to the Riemann zeta function. This result was extended in 1987 to show that the probability that k random integers have greatest common divisor d is d−k/ζ.
Using this information, the expected value of the greatest common divisor function can be seen to not exist when k = 2. In this case the probability that the gcd equals d is d−2/ζ, and since ζ = π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 is a commutative ring, and and are in, then an element of is called a common divisor of and if it divides both and .
If is a common divisor of and, and every common divisor of and divides, then is called a greatest common divisor of and b.
With this definition, two elements and may very well have several greatest common divisors, or none at all. If is an integral domain then any two gcd's of and 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 is a unique factorization domain, then any two elements have a gcd, and more generally this is true in gcd domains.
If is a Euclidean domain in which euclidean division is given algorithmically, 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. In a ring all of whose ideals are principal, this ideal will be identical with the set of multiples of some ring element d; then this is a greatest common divisor of and b. But the ideal can be useful even when there is no greatest common divisor of and b.