수학 개념 지도
정수론(Number theory)

최대공약수와 유클리드 호제법(GCD and the Euclidean algorithm)

두 수의 최대공약수⁠(greatest common divisor)⁠는 큰 수를 작은 수로 나눈 나머지⁠(remainder)⁠로 바꿔 가며 구한다. 직사각형을 정사각형으로 채우는 그림과 같다.

gcd⁡(a,b)=gcd⁡(b, a mod b),gcd⁡(a,0)=a\gcd(a, b) = \gcd(b,\ a \bmod b), \qquad \gcd(a, 0) = a
먼저 보면 좋은 개념소인수분해

12와 18을 모두 나누는 수, 다시 말해 두 수의 공약수는 1, 2, 3, 6입니다(12의 약수⁠(divisor)⁠는 1, 2, 3, 4, 6, 12, 18의 약수는 1, 2, 3, 6, 9, 18). 그중 가장 큰 6을 12와 18의 최대공약수라 하고, gcd⁡(12,18)=6\gcd(12, 18) = 6으로 적습니다. gcd는 영어 greatest common divisor의 머리글자입니다. 수가 커지면 약수를 하나씩 찾기가 어려워집니다. 더 빠른 길이 있을까요?

그림으로 시작합니다. a×ba \times b 직사각형에서 짧은 변을 한 변으로 하는 정사각형을 떼어 내 봅시다. a=a = , b=b = 입니다. 그런 정사각형을 들어가는 만큼 넣고, 남은 직사각형에서 같은 일을 되풀이합니다. 마지막에 남는 가장 작은 정사각형의 한 변이 최대공약수 입니다. 이 정사각형으로는 처음 직사각형을 빈틈없이 채울 수 있고, 그렇게 채울 수 있는 정사각형 가운데 가장 큽니다. 아래 단계 버튼으로 재생하면 정사각형을 떼어 내는 일이 한 번에 한 단계씩 나타나고, 그 아래에 같은 일을 나눗셈으로 적은 식이 한 줄씩 있습니다.

같은 색 정사각형들이 나눗셈 한 번입니다. 개수가 몫, 남은 직사각형이 나머지입니다.

처음 값 34와 21이라면 34 = 1 × 21 + 13에서 시작해 2 = 2 × 1 + 0까지 일곱 줄이고, 나머지가 0이 되기 직전의 나머지 1이 최대공약수입니다. 줄마다 정사각형의 개수가 몫, 남은 직사각형의 짧은 변이 나머지라는 것을 그림과 맞춰 보세요.

왜 맞을까요? qq를 들어간 정사각형의 개수(몫), r=a−qbr = a - qb를 나머지라 합시다. aa와 bb를 모두 나누는 수는 rr도 나누고, 거꾸로 bb와 rr을 모두 나누는 수는 a=qb+ra = qb + r도 나눕니다. 그래서 정사각형을 떼어 내도 공약수의 목록은 그대로입니다. 나머지는 매번 줄어드니 언젠가 0이 되고, 그때 남은 수 gg에 대해 gcd⁡(g,0)=g\gcd(g, 0) = g입니다(g는 g와 0을 모두 나누는 가장 큰 수입니다). 이 과정을 한 줄로 쓰면 gcd⁡(a,b)=gcd⁡(b, a mod b)\gcd(a, b) = \gcd(b,\ a \bmod b)입니다. a mod ba \bmod b는 'a 모드 b'라 읽고, a를 b로 나눈 나머지를 뜻합니다. 예를 들어 34 mod 21=1334 \bmod 21 = 13이므로 gcd⁡(34,21)=gcd⁡(21,13)\gcd(34, 21) = \gcd(21, 13)입니다. 문제를 같은 모양의 더 작은 문제로 줄이는 재귀⁠(recursion)⁠의 전형입니다.

흔히 최대공약수를 구하려면 소인수분해⁠(prime factorization)⁠가 필요하다고 생각합니다. 학교에서 12 = 2² × 3, 18 = 2 × 3²으로 나누어 공통인 2 × 3 = 6을 찾는 방법을 먼저 배우기 때문입니다. 그러나 호제법에는 소인수분해가 필요 없고, 나눗셈만 되풀이합니다. 이것이 중요한 까닭은 큰 수의 소인수분해가 빠른 방법이 알려져 있지 않을 만큼 어렵기 때문입니다. 호제법의 나눗셈 횟수는 작은 수의 자릿수의 5배를 넘지 않습니다(1844년 프랑스의 가브리엘 라메가 증명). 그래서 수백 자리 수에도 쓸 수 있고, RSA의 열쇠 계산에 쓰입니다.

각 단계의 정사각형 개수를 적어 두면 a/ba/b의 연분수⁠(continued fraction)⁠가 됩니다. 마지막 단계를 빼면 매번 정사각형이 딱 하나씩만 들어가는 쌍이 이웃한 피보나치 수입니다(처음 값 34와 21이 그렇습니다). 수의 크기에 비해 단계가 가장 많은 쌍이 바로 이것이고, 라메의 한계도 여기서 나옵니다.

호제법의 나눗셈을 거꾸로 되짚으면 ax+by=gcd⁡(a,b)ax + by = \gcd(a,b)를 만족하는 정수⁠(integer)⁠ x,yx, y를 찾을 수 있습니다. 12와 5로 해 봅시다. 나눗셈은 두 줄입니다.

12=2⋅5+2,5=2⋅2+112 = 2 \cdot 5 + 2, \qquad 5 = 2 \cdot 2 + 1

마지막 0 아닌 나머지가 1이니 gcd⁡(12,5)=1\gcd(12, 5) = 1입니다. 이제 아래 줄에서 위 줄로 올라갑니다. 둘째 줄을 1에 대해 풀면 1=5−2⋅21 = 5 - 2 \cdot 2입니다. 첫째 줄을 2에 대해 풀면 2=12−2⋅52 = 12 - 2 \cdot 5이니, 이것을 넣습니다.

1=5−2⋅(12−2⋅5)=5−2⋅12+4⋅5=12⋅(−2)+5⋅51 = 5 - 2 \cdot (12 - 2 \cdot 5) = 5 - 2 \cdot 12 + 4 \cdot 5 = 12 \cdot (-2) + 5 \cdot 5

그래서 x = −2, y = 5입니다. 이렇게 되짚는 계산을 확장 유클리드 호제법⁠(extended Euclidean algorithm)⁠이라 하고, 식 ax+by=gcd⁡(a,b)ax + by = \gcd(a,b)를 베주 항등식⁠(Bézout's identity)⁠이라 합니다. 최대공약수가 1인 두 수, 12와 5 같은 두 수를 서로소라 합니다.

이 식이 모듈러 연산⁠(modular arithmetic)⁠에서 나눗셈을 가능하게 합니다. 모듈러 연산은 어떤 수 m으로 나눈 나머지만 보는 계산이고, 이것을 '법 m으로' 계산한다고 말합니다. 시계가 12시 다음에 1시로 돌아가는 것이 법 12의 계산입니다. 위 식 12⋅(−2)+5⋅5=112 \cdot (-2) + 5 \cdot 5 = 1을 12로 나눈 나머지로 보면, 12⋅(−2)12 \cdot (-2)는 12의 배수라 사라지고 5⋅5=25=2⋅12+15 \cdot 5 = 25 = 2 \cdot 12 + 1은 나머지 1을 남깁니다. 다시 말해 법 12에서는 5를 곱하면 1이 되는 수, 5의 역수(역원⁠, inverse element⁠)가 5입니다. 같은 방법으로 aa의 역수⁠(inverse)⁠는 aa가 법 mm과 서로소⁠(coprime)⁠일 때 언제나 있고, 서로소가 아니면 없습니다.

7로 나누면 2가 남고 5로 나누면 3이 남는 수처럼, 서로소인 두 수로 나눈 나머지를 동시에 맞추는 수도 확장 유클리드 호제법으로 만들 수 있습니다(중국인의 나머지 정리⁠, Chinese remainder theorem⁠). 7과 5를 되짚으면 7⋅(−2)+5⋅3=17 \cdot (-2) + 5 \cdot 3 = 1입니다. 여기서 5⋅3=155 \cdot 3 = 15는 7로 나누면 1, 5로 나누면 0이 남고, 7⋅(−2)=−147 \cdot (-2) = -14는 7로 나누면 0, 5로 나누면 1이 남습니다. 그러니 2⋅15+3⋅(−14)=30−42=−122 \cdot 15 + 3 \cdot (-14) = 30 - 42 = -12는 7로 나누면 2, 5로 나누면 3이 남습니다. 여기에 35를 더하면 23입니다. 0부터 34까지의 답은 23 하나이고, 여기에 7⋅5=357 \cdot 5 = 35의 배수⁠(multiple)⁠를 더한 수도 모두 답입니다. 실제로 23 = 3 × 7 + 2, 23 = 4 × 5 + 3입니다.

주기⁠(period)⁠에도 최대공약수와 그 짝인 최소공배수⁠(least common multiple)⁠가 나옵니다. 최소공배수는 두 수의 공통인 배수 가운데 가장 작은 수입니다. 가로로 한 번 왕복하는 데 aa초, 세로로 한 번 왕복하는 데 bb초(a,ba, b는 자연수⁠(natural number)⁠)가 걸리는 리사주 곡선⁠(Lissajous curve)⁠은 두 왕복이 동시에 끝나는 최소공배수 ab/gcd⁡(a,b)ab/\gcd(a, b)초 뒤에야 처음으로 닫힙니다(주기). 예를 들어 4초와 6초면 24/2=1224/2 = 12초입니다.

두 수의 공약수는 모두 최대공약수를 나눕니다. 12와 18의 공약수 1, 2, 3, 6은 모두 6을 나눕니다. 그래서 최대공약수는 '다른 모든 공약수가 나누는 공약수'로 정할 수도 있습니다. 크기 비교 없이 나누어떨어짐만 쓴 정의입니다. 최소공배수도 거꾸로 '다른 모든 공배수를 나누는 공배수'입니다. 범주론⁠(category theory)⁠에서는 이렇게 정한 최대공약수를 '곱', 최소공배수를 '쌍대곱⁠(coproduct)⁠'이라 부릅니다(자세한 것은 보편 성질⁠(universal property)⁠).

a2+b2=c2a^2 + b^2 = c^2을 만족하는 자연수 세 쌍 가운데 3, 4, 5처럼 1 말고는 공약수가 없는 것만 찾으면, 나머지(6, 8, 10이나 9, 12, 15 등)는 모두 그 배수입니다(피타고라스 세 쌍⁠, Pythagorean triples⁠). 최대공약수가 분류의 열쇠입니다.

역사. 이 방법은 기원전 300년 무렵 유클리드가 그때까지의 기하⁠(geometry)⁠와 정수론⁠(number theory)⁠을 13권으로 정리한 책 『원론』에 실려 있습니다. 『원론』 7권은 두 수에서 작은 수를 큰 수에서 거듭 빼어 가는 방법으로 공약수를 찾고, 10권은 같은 절차를 길이에 써서 두 길이에 공통 단위가 있는지를 따집니다. 기록으로 남은 가장 오래된 알고리즘⁠(algorithm)⁠으로 흔히 꼽힙니다. 베주 항등식이라는 이름은 18세기 프랑스 수학자 에티엔 베주에게서 왔지만, 정수에 대한 이 사실은 17세기 초 프랑스의 바셰 드 메지리아크가 이미 적었습니다. 베주는 같은 생각을 다항식⁠(polynomial)⁠으로 넓혔습니다.

위의 '왜 맞을까요'는 오늘날의 말로 하면 반복문의 정확성 증명입니다. 한 단계마다 gcd(a, b)가 변하지 않는다는 것이 반복할 때마다 변하지 않는 성질, 다시 말해 반복 불변식입니다. 매번 줄어드는 음이 아닌 나머지는 반복이 언젠가 끝남을 보장하는 양(변량)입니다. 이 둘로 반복문이 옳다는 것을 보이는 것이 호어 논리⁠(Hoare logic)⁠의 틀입니다.

관련된 시대와 장소알렉산드리아 무세이온
이 개념이 나오는 큰 생각대칭과 불변량

이 개념이 나오는 긴 글

소수 소수를 세는 사람들 소수는 제멋대로 흩어져 있는 것 같다. 그런데 멀리서 세어 보면 로그가 보인다. 정수론과 암호 나머지로 지키는 비밀 한 번도 만난 적 없는 두 사람이 모두가 엿듣는 통신망에서 비밀 열쇠를 맞출 수 있을까? 답은 시계의 산수와 1640년 페르마의 정리에 있다. 집합론 무한에도 크기가 있다 자연수와 짝수는 어느 쪽이 많을까? 칸토어는 무한을 세는 법을 찾았고, 무한이 하나가 아님을 보였다. 삼각함수 원에서 파동으로 별의 위치를 재던 현의 표가 사인이 되고, 열의 흐름을 풀던 푸리에가 모든 파동을 사인으로 쪼갰다. 비유클리드 기하 평행선의 반란 유클리드의 다섯 번째 공준은 2,000년 동안 증명되지 않았다. 증명을 포기한 사람들이 찾은 것은 새로운 우주였다. 계산 이론 기계가 풀 수 없는 문제 모든 수학 문제를 기계적으로 풀 수 있을까? 러셀의 역설에서 괴델과 튜링까지, 그 질문에 대한 답은 '아니오'였고, 그 증명이 컴퓨터를 낳았다. 수학의 오류 틀린 증명이 만든 수학 틀린 증명은 흔하다. 드물게, "정확히 어디가 틀렸는가"라는 물음이 새 분야를 낳는다. 코시의 합 정리와 균등 수렴, 라메의 증명과 아이디얼, 켐프의 사슬, 푸앵카레의 회수된 논문과 혼돈, 프레게의 법칙과 러셀의 편지, 보예보츠키와 증명 보조기까지. 오류는 대개 서로 다른 두 가지를 하나로 여긴 자리에 있었다. 범주론 화살표만으로 본 수학 최대공약수와 교집합과 '그리고'는 같은 것이고, 화살표를 뒤집으면 최소공배수와 합집합과 '또는'이 된다. 무엇으로 만들었는지 묻지 않고 어떻게 이어지는지만 보는 언어로, '자연스럽다'는 말의 뜻, 관계만으로 대상을 알아보는 요네다의 생각, 함자로 본 연쇄법칙, 어디에나 있는 수반까지 사이트의 여러 분야를 가로지른다.

이 개념 위에 세워진 것

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념