프로그래밍/자료구조와 알고리즘

유클리드 호제법

우대비 2024. 3. 28. 19:59
반응형

유클리드 호제법은 두 자연수의 최대공약수(Greatest Common Divisor, GCD)를 찾는 알고리즘임

큰 수에 대해서도 빠르게 최대공약수를 계산이 가능

 

두 자연수 가 있을 때 (), 로 나눈 나머지를 이라고 합시다.

이때, 의 최대공약수는 의 최대공약수와 같습니다.

이 성질을 반복적으로 사용하여 나머지가 0이 될 때까지 과정을 반복합니다.

나머지가 0이 되는 단계에서의 나누는 수가 와 B의 최대공약수입니다.

예시

#include <iostream>
using namespace std;

int gcd(int a, int b) {
    while (b != 0) {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}

int main() {
    int A = 252, B = 105;
    cout << "GCD of " << A << " and " << B << " is " << gcd(A, B) << endl;
    return 0;
}

 

반응형
LIST

'프로그래밍 > 자료구조와 알고리즘' 카테고리의 다른 글

트리 순회  (0) 2024.04.21
트라이 (Trie)  (0) 2024.04.20
오일러 피 함수  (0) 2024.03.28
병합 정렬  (0) 2023.03.10
선택정렬  (0) 2023.02.15