Greatest Common Divisor, Highest Common factor
1 개요
초등학교 때 배우는 숫자의 관련된 성질 중 하나. 약수에 대해서 먼저 배운 뒤, 바로 배우게 될 것이다. 먼저 공약수란, 이름에서 알 수 있듯이 두 수, 혹은 그 이상의 여러 수의 공통인 약수라는 뜻이다. 최대공약수는 당연히 공약수 중 가장 큰 것. 두 수 a,b의 최대공약수를 수학적 기호로 표시하면, gcd(a,b)이며,[1] 더욱 줄여서 (a,b)로 표기하기도 한다. 특히, gcd(a,b)=1이면 두 수 a,b는 서로소(relatively prime, coprime)라고 한다.
가끔 최소공약수라고 잘못 부르는 경우가 있는데, 최소공약수는 무조건 1이므로 논할 가치도 없다. (...)
2 찾는 법
예시로 두 수 12, 18의 공약수 및 최대공약수를 찾고 싶다고 하자. 간단하게, 두 수의 약수를 모두 나열한다.
12: 1, 2, 3, 4, 6, 12
18: 1, 2, 3, 6, 9, 18
여기서 위아랫줄 모두 같이 있는 숫자가 공약수가 된다. 즉, 이 경우에는 1, 2, 3, 6이 공약수가 된다. 최대공약수는, 찾은 공약수 중 가장 큰 것, 즉 이 경우에는 6이 최대공약수가 된다. 참 쉽죠?
하지만 두 수의 약수를 찾는게 어렵다면 어떻게 될까? 2015와 246의 최대공약수를 약수를 나열하는 방법으로 찾으려면 한참이 걸릴 것이다. 이 문제를 해결하기 위한 방법이 바로 유클리드 호제법. 놀랍게도 기원전에 발견된 인류 최초의 알고리즘이라고 한다. 자세한 것은 항목 참조.
3 성질
두 정수 a,b에 대해서,
- gcd(a,b)≥1
- gcd(a,b)=gcd(|a|,|b|)
- gcd(a,0)=|a|
- d=gcd(a,b)라 하면, gcd(ad,bd)=1
- 임의의 정수 k에 대하여, gcd(a,b)=gcd(a+kb,b)
- 임의의 양의 정수 a,b에 대해서, ax+by=gcd(a,b)를 만족하는 정수 x,y가 존재한다.[2]
4 증명
- 1∣a,1∣b이므로, 두 수의 최대공약수는 1보다 크거나 같다. 즉, gcd(a,b)≥1.
- x∣a와 x∣−a는 동치이다. 그런데 |a|는 a 또는 −a이므로 a와 |a|는 같은 약수를 갖는다. 마찬가지로, b와 |b|는 같은 약수를 갖는다. 따라서, x가 a와 b의 공약수라는 것은 |a|와 |b|의 공약수라는 사실과 동치이다. ∴gcd(a,b)=gcd(|a|,|b|)
- 2번으로 부터, gcd(a,0)=gcd(|a|,0)이다. |a|⋅0=0이므로, |a|∣0. 또한, |a|∣|a|이므로, |a|는 |a|와 0의 공약수이다. 그러므로 |a|≤gcd(|a|,0)이다. 그런데 gcd(|a|,0)∣|a|이므로, gcd(|a|,0)≤|a|. 위 두 부등식으로 부터 gcd(|a|,0)=|a|. 다시 한번 2번으로 부터, gcd(a,0)=gcd(|a|,0)=|a|.
- a=dm,b=dn라 하면, gcd(ad,bd)=gcd(m,n)이다. 양의 정수 p가 p∣m,p∣n를 만족한다고 하자. 그러면 m=pe,n=pf를 만족하는 정수 e,f.가 존재한다. 따라서, a=dpe,b=dpf이고 dp는 a,b의 공약수이다. 한편, d는 최대공약수이므로, d≥dp. 따라서 p≤1이고 p=1일 수 밖에 없다. 이로써 보이고자 하는 바가 증명되었다.
- 만약 x가 a,b의 공약수라면, x∣a,x∣b이다. 따라서 x∣kb이고, x∣a+kb이다. 따라서 x는 a+kb와 b의 공약수이다.
역으로, x가 a+kb와 b의 공약수라면, x∣a+kb,x∣b이다. 따라서 x∣kb이고, x∣((a+kb)−kb)=a이다. 즉, x는 a,b의 공약수이다. 따라서 a,b와 a+kb,b는 같은 공약수 집합을 가지므로 최대공약수도 같아야 한다. - 집합 A={ax+by>0|x,y∈Z}를 생각하자. 집합 A는 자연수의 부분집합이고 공집합이 아니므로 well-ordering 원리에 의해 가장 작은 원소가 존재한다. 이를 d라 하면 적당한 정수 x,y에 대해 d=ax+by이다. 여기서 d가 최대공약수임을 보이면 증명이 끝난다.
d>0이므로, 나눗셈 정리에 의하여 a=qd+r,0≤r\ltd인 정수 q,r가 존재한다. 그러면 r=a−qd=a−q(ax+by)=a(1−qx)−b(qy)이므로 r>0이면 r∈A이고, r\ltd가 되어 d가 가장 작은 원소라는 사실에 모순된다. 따라서 r=0이고, d∣a이다. 마찬가지로 d∣b이다. 즉, d∣gcd(a,b).
한편 e가 a,b의 공약수라면 e∣(ax+by)이고,[3] ax+by=d이므로 e∣d, 즉 e≤d이다. 이는 곧 d가 최대공약수임을 보인다.