Inmathematics, thegreatest common divisor (GCD), also known asgreatest common factor (GCF), of two or moreintegers, which are not all zero, is the largest positive integer thatdivides each of the integers. For two integersx,y, the greatest common divisor ofx andy is denoted. For example, the GCD of 8 and 12 is 4, that is,gcd(8, 12) = 4.[1][2]
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 includehighest common factor, etc.[3][4][5][6] Historically, other names for the same concept have includedgreatest common measure.[7]
Thegreatest common divisor (GCD) ofintegersa andb, at least one of which is nonzero, is the greatestpositive integerd such thatd is adivisor of botha andb; that is, there are integerse andf such thata =de andb =df, andd is the largest such integer. The GCD ofa andb is generally denotedgcd(a,b).[8]
When one ofa andb is zero, the GCD is the absolute value of the nonzero integer:gcd(a, 0) = gcd(0,a) = |a|. This case is important as the terminating step of theEuclidean algorithm.
The above definition is unsuitable for defininggcd(0, 0), since there is no greatest integern such that0 ×n = 0. However, zero is its own greatest divisor ifgreatest is understood in the context of the divisibility relation, sogcd(0, 0) is commonly defined as0. This preserves the usual identities for GCD, and in particularBézout's identity, namely thatgcd(a,b)generates the sameideal as{a,b}.[9][10][11] This convention is followed by manycomputer algebra systems.[12] Nonetheless, some authors leavegcd(0, 0) undefined.[13]
The GCD ofa andb is theirgreatest positive common divisor in thepreorder relation ofdivisibility. This means that the common divisors ofa andb are exactly the divisors of their GCD. This is commonly proved by using eitherEuclid's lemma, thefundamental theorem of arithmetic, or theEuclidean algorithm. This is the meaning of "greatest" that is used for the generalizations of the concept of GCD.
The number 54 can be expressed as a product of two integers in several different ways:
Thus the complete list ofdivisors 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 havein common are thecommon divisors of 54 and 24, that is,
Of these, the greatest is 6, so it is thegreatest 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.
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, ana-by-b rectangle can be covered with square tiles of side lengthc only ifc is a common divisor ofa andb.
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).
Greatest common divisors can be computed by determining theprime factorizations of the two numbers and comparing factors. For example, to computegcd(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 The corresponding LCM is then2max(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.
The method introduced byEuclid for computing greatest common divisors is based on the fact that, given two positive integersa andb such thata >b, the common divisors ofa andb are the same as the common divisors ofa –b andb.
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 computegcd(48,18), one proceeds as follows:
Sogcd(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.
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 theEuclidean algorithm, a variant in which the difference of the two numbersa andb is replaced by theremainder of theEuclidean division (also calleddivision with remainder) ofa byb.
Denoting this remainder asa modb, the algorithm replaces(a,b) with(b,a modb) repeatedly until the pair is(d, 0), whered is the greatest common divisor.
For example, to compute gcd(48,18), the computation is as follows:
The binary GCD algorithm is a variant of Euclid's algorithm that is specially adapted to thebinary representation of the numbers, which is used in mostcomputers.
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 witha andb that are the two positive integers whose GCD is sought.
Ifa andb are both even, then divide both by two until at least one of them becomes odd; letd be the number of these paired divisions.
Ifa is even, then divide it by two until it becomes odd.
Ifb is even, then divide it by two until it becomes odd.
Now,a andb are both odd and will remain odd until the end of the computation
Whilea ≠b do
Ifa >b, then replacea witha –b and divide the result by two untila becomes odd (asa andb are both odd, there is, at least, one division by 2).
Ifa <b, then replaceb withb –a and divide the result by two untilb becomes odd.
Now,a =b, and the greatest common divisor is
Step 1 determinesd as the highest power of2 that dividesa andb, and thus their greatest common divisor. None of the steps changes the set of the odd common divisors ofa andb. 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 least2. Moreover, the number of divisions by2 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 of2d = 21 anda =b = 3.
The binary GCD algorithm is particularly easy to implement and particularly efficient on binary computers. Itscomputational complexity is
The square in this complexity comes from the fact that division by2 and subtraction take a time that is proportional to the number ofbits of the input.
The computational complexity is usually given in terms of the lengthn of the input. Here, this length isn = loga + logb, and the complexity is thus
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 acomputer 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 aEuclidean division of large numbers.
Thecomputational complexity of the computation of greatest common divisors has been widely studied.[18] If one uses theEuclidean algorithm and the elementary algorithms for multiplication and division, the computation of the greatest common divisor of two integers of at mostnbits isO(n2).[citation needed] This means that the computation of greatest common divisor has, up to a constant factor, the same complexity as the multiplication.
However, if a fastmultiplication 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 ofn bits takes a time ofT(n), then the fastest known algorithm for greatest common divisor has a complexityO(T(n) logn). This implies that the fastest known algorithm has a complexity ofO(n (logn)2).
The computation of the greatest common divisors belongs thus to the class of problems solvable inquasilinear time.A fortiori, the correspondingdecision problem belongs to the classP of problems solvable in polynomial time. The GCD problem is not known to be inNC, and so there is no known way toparallelize it efficiently; nor is it known to beP-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 ofinteger linear programming with two variables; if either problem is inNC or isP-complete, the other is as well.[19] SinceNC containsNL, it is also unknown whether a space-efficient algorithm for computing the GCD exists, even for nondeterministic Turing machines.
Every common divisor ofa andb is a divisor ofgcd(a,b).
gcd(a,b), wherea andb are not both zero, may be defined alternatively and equivalently as the smallest positive integerd which can be written in the formd =a⋅p +b⋅q, wherep andq are integers. This expression is calledBézout's identity. Numbersp andq like this can be computed with theextended Euclidean algorithm.
gcd(a, 0) = |a|, fora ≠ 0, since any number is a divisor of 0, and the greatest divisor ofa is|a|.[2][5] This is usually used as the base case in the Euclidean algorithm.
Ifa divides the productb⋅c, andgcd(a,b) =d, thena/d dividesc.
Ifm is a positive integer, thengcd(m⋅a,m⋅b) =m⋅gcd(a,b).
Ifm is any integer, thengcd(a +m⋅b,b) = gcd(a,b). Equivalently,gcd(a modb,b) = gcd(a,b).
Ifm is a positive common divisor ofa andb, thengcd(a/m,b/m) = gcd(a,b)/m.
Ifgcd(a,b) =d, thengcd(a/d,b/d) = 1.
The GCD is acommutative function:gcd(a,b) = gcd(b,a).
The GCD is anassociative function:gcd(a, gcd(b,c)) = gcd(gcd(a,b),c). Thusgcd(a,b,c, ...) can be used to denote the GCD of multiple arguments.
The GCD is amultiplicative function in the following sense: ifa1 anda2 are relatively prime, thengcd(a1⋅a2,b) = gcd(a1,b)⋅gcd(a2,b).
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.
It is sometimes useful to definegcd(0, 0) = 0 andlcm(0, 0) = 0 because then thenatural numbers become acompletedistributive lattice with GCD as meet and LCM as join operation.[22] This extension of the definition is also compatible with the generalization for commutative rings given below.
In aCartesian coordinate system,gcd(a,b) can be interpreted as the number of segments between points with integral coordinates on the straightline segment joining the points(0, 0) and(a,b).
For non-negative integersa andb, wherea andb are not both zero, provable by considering the Euclidean algorithm in base n:[23]
In 1972, James E. Nymann showed thatk integers, chosen independently and uniformly from{1, ...,n}, are coprime with probability1/ζ(k) asn goes to infinity, whereζ refers to theRiemann zeta function.[24] (Seecoprime for a derivation.) This result was extended in 1987 to show that the probability thatk random integers have greatest common divisord isd−k/ζ(k).[25]
Using this information, theexpected value of the greatest common divisor function can be seen (informally) to not exist whenk = 2. In this case the probability that the GCD equalsd isd−2/ζ(2), and sinceζ(2) = π2/6 we have
This last summation is theharmonic series, which diverges. However, whenk ≥ 3, the expected value is well-defined, and by the above argument, it is
Fork = 3, this is approximately equal to 1.3684. Fork = 4, it is approximately 1.1106.
The notion of greatest common divisor can more generally be defined for elements of an arbitrarycommutative ring, although in general there need not exist one for every pair of elements.[26]
IfR is a commutative ring, anda andb are inR, then an elementd ofR is called acommon divisor ofa andb if it divides botha andb (that is, if there are elementsx andy inR such thatd·x = a andd·y = b).
Ifd is a common divisor ofa andb, and every common divisor ofa andb dividesd, thend is called agreatest common divisor ofa andb.
With this definition, two elementsa andb may very well have several greatest common divisors, or none at all. IfR is anintegral domain, then any two GCDs ofa andb must beassociate 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, ifR is aunique factorization domain or any otherGCD domain, then any two elements have a GCD. IfR is aEuclidean domain in which euclidean division is given algorithmically (as is the case for instance whenR =F[X] whereF is afield, or whenR is the ring ofGaussian 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 elements2 and1 +√−3 are twomaximal common divisors (that is, any common divisor which is a multiple of2 is associated to2, the same holds for1 +√−3, but they are not associated, so there is no greatest common divisor ofa and b.
Corresponding to the Bézout property we may, in any commutative ring, consider the collection of elements of the formpa +qb, wherep andq range over the ring. This is theideal generated bya andb, and is denoted simply(a,b). In a ring all of whose ideals are principal (aprincipal ideal domain or PID), this ideal will be identical with the set of multiples of some ring elementd; then thisd is a greatest common divisor ofa andb. But the ideal(a,b) can be useful even when there is no greatest common divisor ofa andb. (Indeed,Ernst Kummer used this ideal as a replacement for a GCD in his treatment ofFermat's Last Theorem, although he envisioned it as the set of multiples of some hypothetical, orideal, ring elementd, whence the ring-theoretic term.)
^Some authors treatgreatest common denominator as synonymous withgreatest common divisor. This contradicts the common meaning of the words that are used, asdenominator refers tofractions, 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 sameinteger).
^Some authors use(a,b),[1][2][5] but this notation is often ambiguous.Andrews (1994, p. 16) explains this as: "Many authors write(a,b) forg.c.d.(a,b). We do not, because we shall often use(a,b) to represent a point in the Euclidean plane."
^Thomas H. Cormen,et al.,Introduction to Algorithms (2nd edition, 2001)ISBN0262032937, p. 852
^Bernard L. Johnston, Fred Richman,Numbers and Symmetry: An Introduction to AlgebraISBN084930301X, p. 38
^Martyn R. Dixon,et al.,An Introduction to Essential Algebraic StructuresISBN1118497759, p. 59
^Müller-Hoissen, Folkert; Walther, Hans-Otto (2012). "Dov Tamari (formerly Bernhard Teitler)". In Müller-Hoissen, Folkert; Pallo, Jean Marcel;Stasheff, Jim (eds.).Associahedra, Tamari Lattices and Related Structures: Tamari Memorial Festschrift. Progress in Mathematics. Vol. 299. Birkhäuser. pp. 1–40.ISBN978-3-0348-0405-9.. Footnote 27, p. 9: "For example, the natural numbers withgcd (greatest common divisor) as meet andlcm (least common multiple) as join operation determine a (complete distributive) lattice." Including these definitions for 0 is necessary for this result: if one instead omits 0 from the set of natural numbers, the resulting lattice is not complete.
^Lovett, Stephen (2015). "Divisibility in Commutative Rings".Abstract Algebra: Structures and Applications. Boca Raton: CRC Press. pp. 267–318.ISBN9781482248913.