유클리드 호제법
유클리드 호제법은 두 정수의 최대공약수(GCD)를 나머지 연산의 반복으로 구한다 정수론 알고리즘 분야의 대표적인 알고리즘 또는 핵심 계산 문제로, 자료 표현과 입력 조건에 맞는 계산 절차를 사용한다. 명시적인 수학적 불변식·상태 정의를 바탕으로 구현하므로 단순한 명령어 조합과는 구별된다...
| 분류 | 알고리즘 · 정수론 알고리즘 |
|---|---|
| 핵심 문제 | 두 정수의 최대공약수(GCD)를 나머지 연산의 반복으로 구한다 |
| 방법 | a를 b로 나눈 나머지 r에 대해 gcd(a,b)=gcd(b,r)를 적용하고 r=0일 때 마지막 0이 아닌 절댓값을 반환한다 |
| 계산 비용 | 비트 복잡도를 제외한 정수 나눗셈 연산 수 O(log min(|a|,|b|)) |
| 적용 조건 | 정수 산술과 음수·0 입력의 최대공약수 정의가 필요하다 |
| 관련 활용 | 약분·모듈러 산술·정수 해법의 기반이다 |
| 관련 이론 | 자료구조, 계산 복잡도 |
| 참고 자료 | CP-Algorithms |
유클리드 호제법은 두 정수의 최대공약수(GCD)를 나머지 연산의 반복으로 구한다 정수론 알고리즘 분야의 대표적인 알고리즘 또는 핵심 계산 문제로, 자료 표현과 입력 조건에 맞는 계산 절차를 사용한다. 명시적인 수학적 불변식·상태 정의를 바탕으로 구현하므로 단순한 명령어 조합과는 구별된다.[1]
계산 절차는 a를 b로 나눈 나머지 r에 대해 gcd(a,b)=gcd(b,r)를 적용하고 r=0일 때 마지막 0이 아닌 절댓값을 반환한다. 나머지 크기가 감소하므로 종료한다. 각 단계의 상태가 무엇을 의미하는지 정의하고 초기값과 경계 입력을 검사하면 결과의 정확성을 증명하거나 테스트할 수 있다.
복잡도는 비트 복잡도를 제외한 정수 나눗셈 연산 수 O(log min(|a|,|b|)) 적용 전제는 정수 산술과 음수·0 입력의 최대공약수 정의가 필요하다 실제 연산량·메모리 사용은 구현의 자료구조와 정수·실수 표현, 전처리 및 입력 크기에 따라 달라진다.
응용과 관련 기법을 보면 약분·모듈러 산술·정수 해법의 기반이다. 확장 유클리드 알고리즘은 베주 계수까지 계산한다. 같은 문제라도 최악 시간 보장, 메모리 요구 사항과 정밀도·확률적인 실패 가능성에 따라 적합한 알고리즘이 달라진다.[2]