Notice
Recent Posts
Recent Comments
Link
승코딩당당당
유클리드 호제법 (euclidean-algorithm) 본문
코딩 테스트에서 수학 알고리즘 문제를 풀다 보면 자주 등장하는 개념이 바로 최대공약수(GCD)이다.
최대공약수를 구하는 가장 기본적인 방법은 두 수를 소인수 분해한 뒤, 공통된 소수들의 곱을 구하는 것이다.
하지만 이 방법은 구현이 번거롭고, 큰 수에 대해서는 비효율적이다.
이를 훨씬 간단하고 빠르게 구할 수 있는 방법이 바로 유클리드 호제법(Euclidean Algorithm) 이다.
이번 글에서는 유클리드 호제법의 원리와 동작 과정, 그리고 왜 이 방법이 효율적인지 정리해보려고 한다. ✍️
유클리드 호제법이란?
유클리드 호제법은 두 수의 최대공약수(GCD, Greatest Common Divisor)를 구하는 알고리즘이다.
이 알고리즘의 핵심 아이디어는 다음과 같다.
두 수 A와 B에 대해
A를 B로 나눈 나머지를 R이라고 할 때,
gcd(A, B) = gcd(B, R) 이다.
즉, 최대공약수는 나머지를 이용해 계속 줄여나갈 수 있다는 뜻이다. 🔁
핵심 개념: MOD 연산
유클리드 호제법을 이해하려면 먼저 MOD 연산(나머지 연산) 을 이해해야 한다.
A % B = A를 B로 나눈 나머지
이 나머지 연산이 최대공약수를 구하는 데 핵심 역할을 한다.
왜냐하면,
- A와 B의 공약수는
- B와 (A % B)의 공약수와 동일하기 때문이다.
이 성질 덕분에 숫자를 점점 줄이면서 최대공약수를 구할 수 있다.
유클리드 호제법의 동작 과정 🔁
유클리드 호제법은 다음 3단계를 반복한다.
- 큰 수를 작은 수로 나누는 MOD 연산을 수행한다.
- 앞 단계에서의 작은 수와 MOD 연산 결괏값(나머지)으로 MOD 연산을 수행한다.
- 단계 2번을 반복하다가 나머지가 0이 되는 순간의 작은 수를 최대 공약수로 선택한다,

시간 복잡도 ⏰
유클리드 호제법의 시간 복잡도는 아래와 같다.
O(log N)
나머지 연산을 할 때마다 숫자가 급격히 줄어들기 때문에 매우 효율적인 알고리즘으로 알려져 있다.
그래서 큰 수에 대해서도 빠르게 최대공약수를 구할 수 있다.
'개발 > 알고리즘' 카테고리의 다른 글
| 오일러 피 (Euler’s Totient) - 서로소 개수 구하기 (0) | 2026.03.02 |
|---|---|
| 소수(prime number) 구하기 - 에라토스테네스의 체 (2) | 2026.02.02 |
| 그리디 알고리즘 (탐욕법, Greedy Algorithm) (0) | 2026.01.31 |
| 이진 탐색 (binary search) (1) | 2026.01.25 |
| BFS(breadth-first search) 너비 우선 탐색 (1) | 2026.01.11 |