Division Theorem이 나눗셈의 기초라면, GCD는 그 위에 세워진 정수론의 첫 번째 건물이다. 두 정수가 공유하는 가장 큰 약수는 단순한 수치를 넘어, 베주 항등식을 통해 암호학의 핵심 알고리즘을 뒷받침한다.
이 글의 주요 개념
- GCD 대수적 정의: d | a, d | b이고, c | a, c | b이면 c | d가 되는 유일한 d ≥ 0
- 유클리드 호제법: gcd(b, a) = gcd(a, r), 나머지가 0이 될 때까지 반복
- 확장 유클리드 알고리즘: gcd(a, b) = xa + yb (베주 항등식)
- 서로소 성질: gcd(a, b) = 1 ↔ ax + by = 1인 정수 x, y가 존재
GCD 정의
임의의 정수 a, b에 대해, 최대공약수 d=gcd(a,b)는 다음 두 조건을 동시에 만족하는 유일한 정수 d≥0이다.
- d∣a 이고 d∣b
- 모든 정수 c에 대해 c∣a 이고 c∣b 이면, c∣d
두 번째 조건이 핵심이다. 일상적인 정의(“공약수 중 가장 큰 수”)에서는 c≤d를 요구하지만, c∣d는 이보다 엄밀한(tight한) 조건이다 — c가 d의 약수이면 자동으로 c≤d이기 때문이다.
a와 b가 서로소(coprime) 이면 gcd(a,b)=1이다.
GCD 계산
GCD를 구하는 방법은 크게 두 가지다.
소인수분해(Factorization): 두 수를 각각 소인수분해한 뒤 공통 소인수의 최솟값을 곱한다. 직관적이지만, 큰 수에서는 소인수분해 자체가 NP와 co-NP의 교집합에 속하는 난문제로 매우 느리다.
유클리드 호제법(Euclid Algorithm): 나머지 연산을 반복해 빠르게 GCD를 구한다.
유클리드 호제법
양의 정수 a, b에 대해, 나머지가 0이 될 때까지 다음 과정을 반복한다.
b=q1a+r1
a=q2r1+r2
r1=q3r2+r3
⋮
rk−2=qkrk−1+rk
rk−1=qk+1rk+0
이때 gcd(a,b)=rk이다. 핵심 관계식은 다음과 같다.
b=qa+r⟹gcd(b,a)=gcd(a,r)

증명 — 공약수 집합의 상호 포함으로 증명한다.
gcd(b,a)의 원소들의 집합을 D1, gcd(a,r)의 원소들의 집합을 D2라 하자.
D1⊆D2: p∈D1이면 p∣b, p∣a. r=b−qa이므로 p∣(b−qa), 즉 p∣r. 따라서 p∣a, p∣r이므로 p∈D2.
D2⊆D1: p∈D2이면 p∣a, p∣r. b=qa+r이므로 p∣b. 따라서 p∣a, p∣b이므로 p∈D1.
두 방향 포함이 성립하므로 D1=D2, 즉 gcd(b,a)=gcd(a,r)이다.
확장 유클리드 알고리즘
유클리드 호제법의 각 단계를 역으로 거슬러 올라가면, GCD를 a와 b의 일차 결합(linear combination) 으로 표현할 수 있다.
rk=rk−2−qkrk−1
rk−1을 다시 rk−3과 rk−2로 표현하고 이 과정을 반복하면,
rk=(1+qkqk−1)rk−2−qkrk−3
최종적으로 rk를 a와 b의 일차 결합으로 나타낼 수 있다.
gcd(a,b)=xa+yb(x,y∈Z)
이것이 베주 항등식(Bézout’s Identity) 이다. x와 y는 a, b에 의존하며 유일하지 않다.
쉽게 말하면
확장 유클리드 알고리즘은 "GCD를 구하는 과정을 거꾸로 되감으면, GCD를 두 원래 수의 덧셈·뺄셈 조합으로 표현할 수 있다"는 뜻이다. 예를 들어 gcd(12, 8) = 4이면, 4 = 12 × 1 + 8 × (−1)처럼 쓸 수 있다. 이 성질이 RSA에서 비밀키를 계산하는 핵심 도구가 된다.
서로소의 성질
성질 1: 서로소 판별 기준
gcd(a,b)=1⟺어떤 정수 x,y에 대해 ax+by=1
증명 (⟹): gcd(a,b)=1이면 베주 항등식에 의해 ax+by=1인 x,y가 존재한다.
증명 (⟸): ax+by=1을 만족하는 x,y가 존재한다고 하자. d=gcd(a,b)라 하면 d∣a, d∣b이므로 d∣(ax+by)=1. 따라서 d≤1이고, d≥0이므로 d=1.
성질 2: 서로소와 배수
a∣bc 이고 gcd(a,b)=1⟹a∣c
증명: gcd(a,b)=1이므로 ax+by=1인 x,y가 존재한다. 양변에 c를 곱하면 acx+bcy=c. bc=ka (가정에서 a∣bc)를 대입하면 acx+kay=c, 즉 a(cx+ky)=c. 따라서 a∣c.
성질 3: 서로소의 곱셈 보존
gcd(a,b)=1 이고 gcd(a,c)=1⟹gcd(a,bc)=1
증명: gcd(a,b)=1이면 ax1+by1=1, gcd(a,c)=1이면 ax2+cy2=1인 정수들이 존재한다. 두 식을 곱하면,
(ax1+by1)(ax2+cy2)=a(ax1x2+cx1y2+bx2y1)+bc⋅y1y2=1
이를 a와 bc의 일차 결합으로 표현했으므로, 성질 1에 의해 gcd(a,bc)=1.
GCD 정의 동치 증명
일상적 정의(“공약수 중 가장 큰 수”)와 위의 대수적 정의가 동치임을 증명한다.
A, B, D를 각각 a, b, d의 약수 집합이라 하자. d가 최대공약수이려면 D=A∩B, 즉 d의 약수 집합이 a와 b의 공약수 집합과 일치해야 한다.
A∩B⊆D: t∈A∩B이면 t∣a, t∣b. 베주 항등식 d=xa+yb에서 t∣(xa+yb)=d. 따라서 t∈D.
D⊆A∩B: t∈D이면 t∣d, 즉 d=tk. a=a′d, b=b′d로 쓰면 a=a′tk, b=b′tk. 따라서 t∣a, t∣b이므로 t∈A∩B.
두 방향 포함이 성립하므로 D=A∩B. 두 정의가 동치임이 증명되었다.
GCD 확장
GCD는 3개 이상의 정수로 자연스럽게 확장된다.
d=gcd(a,b,c)는 다음을 만족하는 유일한 정수 d≥0이다.
- d∣a, d∣b, d∣c
- 모든 정수 e에 대해 e∣a, e∣b, e∣c이면 e∣d
계산은 연속 적용으로 처리한다. gcd(a,b,c)=gcd(gcd(a,b),c).
핵심 정리
- GCD의 대수적 정의는 "가장 큰 공약수"라는 직관적 정의와 동치이며, c | d 조건이 더 엄밀하고 다루기 쉽다.
- 유클리드 호제법은 gcd(b, a) = gcd(a, r)을 반복 적용해 로그 시간에 GCD를 구한다.
- 확장 유클리드 알고리즘(베주 항등식)은 gcd(a, b) = xa + yb를 보장한다. 이는 서로소 판별, 모듈러 역원 계산, RSA 키 생성의 수학적 근거가 된다.
- 서로소 성질(gcd = 1)은 정수론 전반에서 핵심 도구로 쓰이며, 특히 암호 시스템에서 키와 모듈러스의 관계를 보장하는 데 필수적이다.
다음 포스트
Modular Arithmetic — 모듈러 산술과 잉여계 — GCD를 기반으로 모듈러 산술의 동치 관계를 정의하고, 완전·축약 잉여계, 오일러 정리, 페르마의 소정리, 중국인의 나머지 정리(CRT)까지 — 공개키 암호의 계산 엔진을 완성한다.