Algorithm

유클리드 호제법

ppwag 2020. 11. 23. 17:33

Euclidean algorithm

자연수 2개의 최대공약수(greatest common diviser)를 구하는 알고리즘이다. 입력받은 두 수를 서로(互) 나누기(除) 때문에 호제법(互除法) 이라는 이름으로 불린다. 두 개의 자연수 a, b에 대해서 ab로 나눈 나머지를 r이라고 하면, ab의 최대공약수는 br의 최대공약수와 같다. 이 성질을 이용해 r0이 될 때 까지 반복해서 나누었을 때의 나누는 수가 ab의 최대공약수 라고 한다.

C++

int gcd(int a, int b){
    if(b == 0) return a;
    else return gcd(b, a%b);
}

// 최소공배수 (least common multiple)
int lcm(int a, int b){
    return a * b / gcd(a, b);
}

'Algorithm' 카테고리의 다른 글

약수 찾기  (0) 2021.03.20
Prefix Sum  (0) 2021.03.01
에라토스테네스의 체  (0) 2020.11.17
자주 까먹는 것들  (0) 2020.11.12
문제해결 영단어 정리  (0) 2020.09.20

댓글