수론에서, 정수들의 **공약수**(公約數, 영어: common factor)는 동시에 그들 모두의 약수인 정수다. 적어도 하나가 0이 아닌 정수들의 **최대공약수**(最大公約數, 문화어: 련속나눔셈; 영어: greatest common factor, 약자 GCF)는 공약수 가운데 가장 큰 하나다. 다항식이나 환의 원소에 대해서도 정의할 수 있다.

정의
--

두 정수 {\displaystyle n,m\in \mathbb {Z} }의 **공약수**는 n의 약수이자 m의 약수인 정수이다. 모두 0이 아닌 두 정수 {\displaystyle n,m\in \mathbb {Z} }의 **최대공약수**는 다음과 같은 여러 정의가 있으며, 이들은 서로 동치이다.

* n, m의 가장 큰 공약수
* n, m의 공약수이자, n, m의 모든 공약수의 배수인 양의 정수
* n, m의 정수 계수 선형 결합인 최소 양의 정수

모두 0이지는 않은 두 정수의 최대공약수는 항상 존재하며, 항상 유일하다. 기호는 {\displaystyle \gcd\{n,m\}} 또는 (n,m).

비슷하게, 여러 정수 {\displaystyle n\_{1},n\_{2},\dots ,n\_{k}\in \mathbb {Z} }의 **공약수**는 공통 약수이며, 모두 0이지는 않은 여러 정수 {\displaystyle n\_{1},n\_{2},\dots ,n\_{k}\in \mathbb {Z} }의 **최대공약수** {\displaystyle \gcd\{n\_{1},n\_{2},\dots ,n\_{k}\}}는 다음과 같은 서로 동치인 정의가 있다. 이는 항상 유일하게 존재한다.

* 가장 큰 공약수
* 공약수이자, 모든 공약수의 배수인 양의 정수
* 정수 계수 선형 결합인 최소 양의 정수
* (재귀적 정의) {\displaystyle \gcd\{\gcd\{\gcd\{\cdots \gcd\{\gcd\{n\_{1},n\_{2}\},n\_{3}\}\cdots \},n\_{k-1}\}n\_{k}\}}

최대공약수가 1인 정수들을 **서로소**라고 한다.

성질
--

최대공약수는 다음과 같은 성질들을 가진다. (여기서 최대공약수를 취하는 정수들은 적어도 하나가 0이 아니라고 가정한다.)

약수 관계는 최대공약수를 통해 다음과 같이 나타낼 수 있다.

{\displaystyle n\mid m\iff \gcd\{n,m\}=n}
공약수는 최대공약수의 약수와 동치이다.

{\displaystyle k\mid n,m\iff k\mid \gcd\{n,m\}}
{\displaystyle k\mid n\_{1},n\_{2},\dots ,n\_{t}\iff k\mid \gcd\{n\_{1},n\_{2},\dots ,n\_{t}\}}
최대공약수는 정수 계수 선형 결합으로 나타낼 수 있는 최소 양의 정수이다.

{\displaystyle \gcd\{n,m\}=\min\{an+bm>0\colon a,b\in \mathbb {Z} \}}
{\displaystyle \gcd\{n\_{1},n\_{2},\dots ,n\_{t}\}=\min\{a\_{1}n\_{1}+a\_{2}n\_{2}+\cdots +a\_{t}n\_{t}>0\colon a\_{1},a\_{2},\dots ,a\_{t}\in \mathbb {Z} \}}
최대공약수는 음이 아닌 정수 k에 대하여 다음과 같다.

{\displaystyle \gcd\{nk,mk\}=\gcd\{n,m\}k}
{\displaystyle \gcd\{n\_{1}k,n\_{2}k,\dots ,n\_{t}k\}=\gcd\{n\_{1},n\_{2},\dots ,n\_{k}\}k}
{\displaystyle \gcd \left\{{\frac {n}{k}},{\frac {m}{k}}\right\}={\frac {\gcd\{n,m\}}{k}}\qquad (k\mid n,m)}
{\displaystyle \gcd \left\{{\frac {n\_{1}}{k}},{\frac {n\_{2}}{k}},\dots ,{\frac {n\_{t}}{k}}\right\}={\frac {\gcd\{n\_{1},n\_{2},\dots ,n\_{t}\}}{k}}\qquad (k\mid n\_{1},n\_{2},\dots ,n\_{t})}
특히, 정수들을 최대공약수로 나눈 몫들은 서로소다.

{\displaystyle \gcd \left\{{\frac {n}{\gcd\{n,m\}}},{\frac {m}{\gcd\{n,m\}}}\right\}=1}
{\displaystyle \gcd \left\{{\frac {n\_{1}}{\gcd\{n\_{1},n\_{2},\dots ,n\_{t}\}}},{\frac {n\_{2}}{\gcd\{n\_{1},n\_{2},\dots ,n\_{t}\}}},\dots ,{\frac {n\_{t}}{\gcd\{n\_{1},n\_{2},\dots ,n\_{t}\}}}\right\}=1}
정수들 가운데 하나에서 다른 하나와 서로소인 약수를 지워도 최대공약수가 변하지 않는다.

{\displaystyle \gcd\{m,k\}=1\implies \gcd\{nm,k\}=\gcd\{n,k\}}
{\displaystyle \gcd\{m,k\}=1\implies \gcd\{n\_{1},\dots ,n\_{j}m,\dots ,n\_{t},k\}=\gcd\{n\_{1},\dots ,n\_{t},k\}}
소인수분해가 주어진 정수들의 최대공약수는 공통된 소인수의 최소 지수 거듭제곱의 곱이다. 두 정수의 경우 소인수분해가 다음과 같다고 하자.

{\displaystyle n=p\_{1}^{e\_{1}}p\_{2}^{e\_{2}}\cdots p\_{t}^{e\_{t}}}
{\displaystyle m=p\_{1}^{f\_{1}}p\_{2}^{f\_{2}}\cdots p\_{t}^{f\_{t}}}
{\displaystyle e\_{1},e\_{2},\dots ,e\_{t},f\_{1},f\_{2},\dots ,f\_{t}\in \mathbb {Z} \_{\geq 0}}
그렇다면, 최대공약수는 다음과 같다.

{\displaystyle \gcd\{n,m\}=p\_{1}^{\min\{e\_{1},f\_{1}\}}p\_{2}^{\min\{e\_{2},f\_{2}\}}\cdots p\_{t}^{\min\{e\_{t},f\_{t}\}}}
두 정수의 최대공약수와 최소공배수의 관계는 다음과 같다.

{\displaystyle \gcd\{n,m\}\operatorname {lcm} \{n,m\}=nm}

계산
--

최대공약수는 각 정수의 약수를 구하고, 공통되는 약수를 구하고, 가장 큰 하나를 구하면 얻을 수 있다. 예를 들어 12와 18의 경우, 12의 모든 약수는 (±) 1, 2, 3, 4, 6, 12이며, 18의 모든 약수는 (±) 1, 2, 3, 6, 9, 18이므로, 공약수는 (±) 1, 2, 3, 6이다. 가장 큰 6이 바로 최대공약수이다. 최대공약수를 구하는 방법은 그 밖에 소인수분해를 통한 방법과 유클리드 호제법을 통한 방법이 있다.

### 소인수분해

 이 부분의 본문은 소인수분해입니다.
두 수 192와 72의 최대공약수를 소인수 분해를 이용하여 구하여 보자. 일단 두 수를 소인수 분해한다.

192=2^{6}\times 3=2\times 2\times 2\times 2\times 2\times 2\times 3
72=2^{3}\times 3^{2}=2\times 2\times 2\times 3\times 3
구하고 나면, 두 소인수 분해 결과의 중복되는 부분을 찾아 서로 곱한다. 두 결과에서 2가 세 번 중복되어 나오고 3이 한번 중복되어 나왔다. 즉 2\times 2\times 2\times 3=24 최대공약수가 24라는 결론이 나온다.

그러나 일반적으로 소인수 분해를 효율적으로 빠른 시간 내에 하는 방법은 알려져 있지 않다. 더 빠른 시간 안에 구하는 방법에는 호제법이 있다.

### 유클리드 호제법

 이 부분의 본문은 유클리드 호제법입니다.
똑같이 두 수 192와 72의 최대공약수를 이번에는 호제법으로 구하여 보자. 일단 192을 72로 나누어 나머지를 구한다.

192=72\times 2+48
이는 192을 72로 나누어 나온 나머지가 48라는 것을 의미한다. 이번에는 72을 나머지인 48로 나눈다.

72=48\times 1+24
이와 같은 연산을 나머지가 0이 될 때까지 반복한다.

48=24\times 2+0
나머지가 0이 되었으므로 연산을 중지한다. 이때, 나머지가 0이 되기 바로 직전의 연산에서의 나머지가 원래 두 수의 최대공약수가 된다.

이를 수식화 한 것은 호제법 문서를 참조하라.

관련 개념
-----

임의의 환 위에서 최대공약수를 정의할 수 있다. 가환 환에서 두 원소 a와 b에 대하여 d가 최대공약수라 함은 d가 두 원소의 약수이며 동시에 임의의 공약수는 d의 약수가 됨을 말한다. 그러나 이렇게 정의할 경우 최대공약수는 유일하지 않을 수도 있고 두 원소가 영이아니라 하더라도 존재하지 않을 수도 있다. 정역에서는 일단 존재한다면 최대공약수들은 서로 동반된(associated)다. 또한 유일 인수분해정역에서는 영이 아닌 두 원소의 경우 항상 최대공약수가 존재한다.