In mathematics, the greatest common divisor (GCD), also known as greatest common factor (GCF), of two or more integers, which are not all zero, is the largest positive integer that divides each of the integers. For two integers , , the greatest common divisor of and 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...Some authors treat as synonymous with greatest common divisor. This contradicts the common meaning of the words that are used, as denominator refers to fractions, and two fractions do not have any greatest common denominator (if two fractions have the same denominator, one obtains a greater common denominator by multiplying all numerators and denominators by the same integer). 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 below).

Overview

Definition The greatest common divisor (GCD) of integers and , at least one of which is nonzero, is the greatest positive integer such that is a divisor of both and ; that is, there are integers and such that and , and is the largest such integer. The GCD of and is generally denoted .

When one of and is zero, the GCD is the absolute value of the nonzero integer: . This case is important as the terminating step of the Euclidean algorithm.

The above definition is unsuitable for defining , since there is no greatest integer such that . However, zero is its own greatest divisor if greatest is understood in the context of the divisibility relation, so is commonly defined as . This preserves the usual identities for GCD, and in particular Bézout's identity, namely that generates the same ideal as .Thomas H. Cormen, et al., Introduction to Algorithms (2nd edition, 2001) , p. 852Bernard L. Johnston, Fred Richman, Numbers and Symmetry: An Introduction to Algebra , p. 38Martyn R. Dixon, et al., An Introduction to Essential Algebraic Structures , p. 59 This convention is followed by many computer algebra systems.e.g., Wolfram Alpha calculation and Maxima Nonetheless, some authors leave undefined.Jonathan Katz, Yehuda Lindell, Introduction to Modern Cryptography , 2020, section 9.1.1, p. 45

The GCD of and is their greatest positive common divisor in the preorder relation of divisibility. This means that the common divisors of and 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 1, 2, 3, 6, 9, 18, 27, 54. Similarly, the divisors of 24 are 1, 2, 3, 4, 6, 8, 12, 24. 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 .

Coprime numbers

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

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

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.

Applications

Reducing fractions

The greatest common divisor is useful for reducing fractions to the lowest terms. For example, , therefore,

Least common multiple

The least common multiple of two integers that are not both zero can be computed from their greatest common divisor, by 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 , 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 The corresponding LCM is then 2max(4,2) · 3max(1,2) · 5max(0,1) = 24 · 32 · 51 = 720.

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 and such that , the common divisors of and are the same as the common divisors of and .

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

For example, to compute , one proceeds as follows:

So .

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 and is replaced by the remainder of the Euclidean division (also called division with remainder) of by .

Denoting this remainder as , the algorithm replaces with repeatedly until the pair is , where is the greatest common divisor.

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

This again gives .

Binary GCD algorithm

The binary GCD algorithm is a variant of Euclid's algorithm that is specially adapted to the binary representation of the numbers, which is used in most computers.

The binary GCD algorithm differs from Euclid's algorithm essentially by dividing by two every even number that is encountered during the computation. Its efficiency results from the fact that, in binary representation, testing parity consists of testing the right-most digit, and dividing by two consists of removing the right-most digit.

The method is as follows, starting with and that are the two positive integers whose GCD is sought. If and are both even, then divide both by two until at least one of them becomes odd; let be the number of these paired divisions. If is even, then divide it by two until it becomes odd. If is even, then divide it by two until it becomes odd. Now, and are both odd and will remain odd until the end of the computation While do If , then replace with and divide the result by two until becomes odd (as and are both odd, there is, at least, one division by 2). If , then replace with and divide the result by two until becomes odd. Now, , and the greatest common divisor is

Step 1 determines as the highest power of that divides and , and thus their greatest common divisor. None of the steps changes the set of the odd common divisors of and . This shows that when the algorithm stops, the result is correct. The algorithm stops eventually, since each steps divides at least one of the operands by at least . Moreover, the number of divisions by and thus the number of subtractions is at most the total number of digits.

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 and .

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

The square in this complexity comes from the fact that division by and subtraction take a time that is proportional to the number of bits of the input.

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

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. The quotients are collected into a small 2-by-2 transformation matrix (a matrix of single-word integers) to reduce 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.

Other methods

If and are both nonzero, the greatest common divisor of and can be computed by using least common multiple (LCM) of and : , but more commonly the LCM is computed from the GCD.

Using Thomae's function ,

which generalizes to and rational numbers or commensurable real numbers.

Keith Slavin has shown that for odd :

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 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 (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.