최대공약수와 유클리드 호제법(GCD and the Euclidean algorithm)
두 수의 최대공약수(greatest common divisor)는 큰 수를 작은 수로 나눈 나머지(remainder)로 바꿔 가며 구한다. 직사각형을 정사각형으로 채우는 그림과 같다.
12와 18을 모두 나누는 수, 다시 말해 두 수의 공약수는 1, 2, 3, 6입니다(12의 약수(divisor)는 1, 2, 3, 4, 6, 12, 18의 약수는 1, 2, 3, 6, 9, 18). 그중 가장 큰 6을 12와 18의 최대공약수라 하고,
그림으로 시작합니다.
처음 값 34와 21이라면 34 = 1 × 21 + 13에서 시작해 2 = 2 × 1 + 0까지 일곱 줄이고, 나머지가 0이 되기 직전의 나머지 1이 최대공약수입니다. 줄마다 정사각형의 개수가 몫, 남은 직사각형의 짧은 변이 나머지라는 것을 그림과 맞춰 보세요.
왜 맞을까요?
흔히 최대공약수를 구하려면 소인수분해(prime factorization)가 필요하다고 생각합니다. 학교에서 12 = 2² × 3, 18 = 2 × 3²으로 나누어 공통인 2 × 3 = 6을 찾는 방법을 먼저 배우기 때문입니다. 그러나 호제법에는 소인수분해가 필요 없고, 나눗셈만 되풀이합니다. 이것이 중요한 까닭은 큰 수의 소인수분해가 빠른 방법이 알려져 있지 않을 만큼 어렵기 때문입니다. 호제법의 나눗셈 횟수는 작은 수의 자릿수의 5배를 넘지 않습니다(1844년 프랑스의 가브리엘 라메가 증명). 그래서 수백 자리 수에도 쓸 수 있고, RSA의 열쇠 계산에 쓰입니다.
각 단계의 정사각형 개수를 적어 두면
호제법의 나눗셈을 거꾸로 되짚으면
마지막 0 아닌 나머지가 1이니
그래서 x = −2, y = 5입니다. 이렇게 되짚는 계산을 확장 유클리드 호제법(extended Euclidean algorithm)이라 하고, 식
이 식이 모듈러 연산(modular arithmetic)에서 나눗셈을 가능하게 합니다. 모듈러 연산은 어떤 수 m으로 나눈 나머지만 보는 계산이고, 이것을 '법 m으로' 계산한다고 말합니다. 시계가 12시 다음에 1시로 돌아가는 것이 법 12의 계산입니다. 위 식
7로 나누면 2가 남고 5로 나누면 3이 남는 수처럼, 서로소인 두 수로 나눈 나머지를 동시에 맞추는 수도 확장 유클리드 호제법으로 만들 수 있습니다(중국인의 나머지 정리, Chinese remainder theorem). 7과 5를 되짚으면
주기(period)에도 최대공약수와 그 짝인 최소공배수(least common multiple)가 나옵니다. 최소공배수는 두 수의 공통인 배수 가운데 가장 작은 수입니다. 가로로 한 번 왕복하는 데
두 수의 공약수는 모두 최대공약수를 나눕니다. 12와 18의 공약수 1, 2, 3, 6은 모두 6을 나눕니다. 그래서 최대공약수는 '다른 모든 공약수가 나누는 공약수'로 정할 수도 있습니다. 크기 비교 없이 나누어떨어짐만 쓴 정의입니다. 최소공배수도 거꾸로 '다른 모든 공배수를 나누는 공배수'입니다. 범주론(category theory)에서는 이렇게 정한 최대공약수를 '곱', 최소공배수를 '쌍대곱(coproduct)'이라 부릅니다(자세한 것은 보편 성질(universal property)).
역사. 이 방법은 기원전 300년 무렵 유클리드가 그때까지의 기하(geometry)와 정수론(number theory)을 13권으로 정리한 책 『원론』에 실려 있습니다. 『원론』 7권은 두 수에서 작은 수를 큰 수에서 거듭 빼어 가는 방법으로 공약수를 찾고, 10권은 같은 절차를 길이에 써서 두 길이에 공통 단위가 있는지를 따집니다. 기록으로 남은 가장 오래된 알고리즘(algorithm)으로 흔히 꼽힙니다. 베주 항등식이라는 이름은 18세기 프랑스 수학자 에티엔 베주에게서 왔지만, 정수에 대한 이 사실은 17세기 초 프랑스의 바셰 드 메지리아크가 이미 적었습니다. 베주는 같은 생각을 다항식(polynomial)으로 넓혔습니다.
위의 '왜 맞을까요'는 오늘날의 말로 하면 반복문의 정확성 증명입니다. 한 단계마다 gcd(a, b)가 변하지 않는다는 것이 반복할 때마다 변하지 않는 성질, 다시 말해 반복 불변식입니다. 매번 줄어드는 음이 아닌 나머지는 반복이 언젠가 끝남을 보장하는 양(변량)입니다. 이 둘로 반복문이 옳다는 것을 보이는 것이 호어 논리(Hoare logic)의 틀입니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- 연립일차방정식과 역행렬
… 짝수라서 정수해가 없고, 6x + 4y = 2 는 x = 1, y = -1 이라는 해가 있습니다. 해는유클리드 호제법을 거꾸로 따라가 찾습니다. 반대로 방정식이 미지수보다 많으면 보통 모든 식을 만족하는 해가 없습니다. …
- 리사주 곡선
… 특별한 값이 아닌 한 곡선은 좌우 벽에 각각 a 번, 위아래 벽에 각각 b 번 닿는 도형이 됩니다(최대공약수). 기본값 3 : 2라면 좌우 벽에 세 번씩, 위아래 벽에 두 번씩 닿습니다. x가 한 바퀴 돌 때마다 …
- 단사·전사·전단사
… k에서 a·k mod n으로 화살표를 그렸습니다. 전단사가 될 조건은 \gcd(a, n) = 1 입니다(최대공약수). 서로소일 때만 곱셈을 되돌리는 "나눗셈", 곧 곱해서 1이 되는 수(역원)가 존재합니다. 이것이 …
- 가산 집합
… 걸으면 모든 칸을 언젠가 지나갑니다. 2/4 처럼 약분되는 칸은 이미 센 수( 1/2 )이니 건너뜁니다(최대공약수가 1인 칸만 셉니다). 한 칸씩 세어 봅시다. 노란 칸이 번호가 붙은 분수, 흐린 칸은 약분되어 건너뛴 …
- 소인수분해
… 최소공배수(지수마다 큰 쪽, )입니다. 큰 수에서는 이 분해가 어렵기 때문에 최대공약수는 분해 없이유클리드 호제법으로 구합니다. 서로 다른 소수 k 개를 한 번씩 곱한 수(30 = 2·3·5처럼 제곱 인수가 없는 …
- 연분수
유클리드 호제법의 정사각형 채우기를 가로 x , 세로 1인 직사각형에 해 봅시다. x = 이고, 단계까지 보입니다. 각 …
- 피보나치 수열
… = [1; 1, 1, \dots] 의 연분수 수렴분수입니다. 그림의 정사각형 채우기를 거꾸로 하면유클리드 호제법이 됩니다. 이웃한 피보나치 수에서는 마지막 단계를 빼면 매번 정사각형이 하나씩만 들어가서, 수의 크기에 …
- 모듈러 연산
… 그 칸이 a 의 역수, ax \equiv 1 을 만드는 x 입니다. 역수가 있는 a 는 정확히 n 과최대공약수가 1인 수들이고, 그 개수가 오일러 피 함수입니다. 최대공약수 g 가 1보다 크면 ax 와 n 이 …
- 오일러 피 함수와 페르마 소정리
모듈러 연산에서 역수가 있는 수, 곧 n 과최대공약수가 1인 수를 단원 이라 부릅니다. n = 의 시계에서 단원(색칠된 점)은 \varphi(n) = …
- RSA 암호
… 나머지 정리⟧). d 는 \varphi(n) 을 법으로 한 e 의 모듈러 역수이고, 확장유클리드 호제법으로 순식간에 구합니다. e 가 \varphi(n) 과 서로소가 아니면 역수가 없고, 그림에서 여러 점이 …
- 피타고라스 세 쌍
… 각은 파란 화살표의 두 배입니다. m \gt n \gt 0 이고, m, n 이 서로소이며(최대공약수 1,유클리드 호제법) 한쪽만 짝수이면 공약수 없는 원시 세 쌍이 됩니다. 거꾸로 원시 세 쌍은 홀수 변을 a 로 놓으면 모두 …
- 바젤 문제
… 보입니다. 격자점 (a, b) 가 원점에서 "보이려면" 원점과 사이에 다른 격자점이 없어야 하고, 이는최대공약수\gcd(a,b) = 1 과 같은 말입니다. \gcd(a, b) = g \gt 1 이면 (a/g, b/g) …
- 1의 거듭제곱근
… 한 점에서 출발해 k = 칸씩 건너뛰며 이어 봅시다. 모든 점을 한 번에 도는 별이 되는 건 n과 k의최대공약수가 1일 때( \gcd(n, k) = 1 , 서로소일 때)뿐입니다. 지금은 . 이렇게 거듭제곱하면 모든 …
- 원시근
… n 가지뿐이니 거듭제곱은 언젠가 이미 들른 수로 돌아옵니다(비둘기집 원리). a 가 n 과 서로소이면(최대공약수가 1) 곱하기 a 는 되돌릴 수 있는 전단사라서, 돌아오는 곳은 언제나 출발점 1입니다. 처음 1로 …
- 중국인의 나머지 정리
… n 의 배수 중 m 으로 나누면 1이 남는 수와, m 의 배수 중 n 으로 나누면 1이 남는 수를확장 유클리드 호제법으로 구해 두면, 둘을 a 배, b 배 해서 더하면 끝입니다. 격자의 오른쪽 끝과 왼쪽 끝, 위와 아래를 …
- 소수 판정
… 모듈러 연산에서 이어집니다. 그림의 회색 칸, 곧 n 과 공약수가 있는 밑을 가려내는 최대공약수 계산은유클리드 호제법이 맡습니다.
- 수학적 귀납법
… 처음에 참이고 한 바퀴가 참을 참으로 넘겨준다는 것을 보이는 일이니, 반복 횟수에 대한 귀납법입니다.유클리드 호제법이 언제나 최대공약수를 준다는 증명이 대표적인 예입니다. 두 수를 (큰 수를 작은 수로 나눈 나머지, 작은 …
- 순열
… 최소공배수입니다. 길이 3과 2인 순환으로 된 섞기는 여섯 번 만에 처음으로 돌아옵니다. 최소공배수는최대공약수로 구하고, 순환 하나를 k번 돌린 결과는 k를 순환 길이로 나눈 나머지로 정해지니 모듈러 연산의 …
- 알고리즘
… 말이 되었습니다. 가장 오래된 예로 흔히 꼽히는 것은 기원전 300년 무렵 유클리드의 『원론』에 실린최대공약수 구하기입니다. 큰 수에서 작은 수를 빼도 최대공약수는 그대로이니, 한쪽이 0이 될 때까지 빼기를 되풀이하면 남은 …
- 재귀
… 한 번 구한 답을 적어 두고 다시 쓰면 n번 남짓이면 됩니다. 이것이 동적 계획법입니다. 이어지는 곳.유클리드 호제법\gcd(a, b) = \gcd(b,\ a \bmod b) 은 자기를 한 번만 부르는 재귀이고, 문제를 …
- 정수론
… 산술의 기본정리). 기원전 300년 무렵 유클리드의 『원론』 7–9권에 이미 두 수의최대공약수를 구하는 유클리드 호제법과, 소수가 끝없이 많다는 증명이 실려 있습니다. 분해가 하나뿐이라는 사실을 …
- 범주론
… '동치인 것은 같다'는 공리로까지 나아갑니다. 행렬의 범주는 행렬의 곱을, 나누어떨어짐의 범주는최대공약수를 새 눈으로 보게 합니다. 이 어휘 위에 더 쌓은 구조로는 재귀와 귀납을 한 틀로 모으는 시작 대수, …
- 보편 성질: 곱, 쌍대곱, 극한
… 때문입니다. '둘 다를 나누는 수라면 반드시 4를 거쳐 간다', 곧 모든 공약수가 4의 약수라는 것이최대공약수를 정하는 성질입니다. 아래는 60의 약수들을 나누어떨어짐으로 이은 그림입니다. 아래에서 위로 가는 선은 …
- 유일 인수분해와 아이디얼
… 유클리드의 보조정리가 기약원이면 소원임을 보장합니다. 그 보조정리는 나머지가 있는 나눗셈, 곧유클리드 호제법에서 나옵니다. \mathbb{Z}[\sqrt{-5}] 의 2는 기약원이지만 소원이 아닙니다. 곱 …