유클리드 알고리즘 (혹은 유클리드 호제법)이란?
두 양의 정수 A, B에 대한 최대공약수를 구하는 알고리즘이다.
이는 O(log N) 으로 가장 효율적으로 GCD를 구한다.
* 최대공약수(Greatest common divisor, GCD)란, A, B를 나누는 자연수 중에서 가장 큰 자연수를 말한다.
* 호제법이란, 두 수가 서로 상대의 수를 나누어 원하는 수를 얻는 알고리즘을 말한다.
최대공약수는 다음과 같은 성질을 갖는다.

식에서 mod는 나머지를 구하는 모듈러 연산(%) 이다.
성질을 이용한 예시는 다음과 같다.

다음은 C++로 구현한 코드이다.
int gcd(int a, int b) {
if (b > 0) return gcd(b, a % b);
return a;
}
'CS > 알고리즘' 카테고리의 다른 글
[Introduction to Algorithms] 4. 분할정복 (0) | 2022.02.14 |
---|---|
[Introduction to Algorithms] 3. 함수의 증가 (0) | 2022.02.12 |
[Introduction to Algorithms] 2. 시작하기 (0) | 2022.02.02 |
[Introduction to Algorithms] 1. 알고리즘의 역할 (0) | 2022.02.02 |