유클리드 호제법이란
유클리드 호제법 또는 유클리드 알고리즘은 2개의 자연수 또는 정식의 최대공약수(Greatest Common Divisor, GCD)를 구하는 알고리즘입니다.
호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘이라는 뜻입니다.
GCD 알고리즘
- 두 개의 정수 와 b (단, a ≥ b)가 주어집니다.
- a를 b로 나눈 나머지를 구합니다. 즉, r = a mod b.
- 이 0이라면, 가 와 의 최대 공약수이며, 알고리즘을 종료합니다.
- 이 0이 아니라면, 이전의 가 되고, 는 이전의 이 되어 위 과정을 반복합니다.
GCD 구현
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
GCD 시간복잡도
두 수 a와 b가 주어졌을 때, 각 단계에서 나눗셈과 나머지 연산을 수행하므로,
GCD의 시간복잡도는 log(min(a, b))입니다.
'CS > 알고리즘' 카테고리의 다른 글
[알고리즘] 라빈-카프 알고리즘 (0) | 2024.08.29 |
---|---|
[알고리즘] 다익스트라 (0) | 2024.07.31 |
[알고리즘] 오일러 피 (0) | 2024.06.26 |
[알고리즘] 소수 구하기 (0) | 2024.06.18 |
[알고리즘] LCM (0) | 2024.06.13 |