유클리드 호제법(Euclidean algorithm) [C++]
Post

유클리드 호제법(Euclidean algorithm) [C++]

1. 정의

2개의 자연수의 최대공약수1를 구하는 알고리즘2

mod(%) 연산자3를 통해 최대공약수를 구할 수 있다.

2. 예시

</img>

  1. a 와 b를 mod 연산한다.
  2. mod 연산의 결과가 0이 아닐시, b를 기준으로 mod 결과를 다시 mod 연산한다.
  3. mod 연산의 결과가 0일 때까지 반복한다.
  4. mod 연산의 결과가 0일 떄, b 가 최대공약수가 된다.

3. 코드

1
2
3
4
5
6
7
8
9
int gcd(int a,int b){
    int c = a % b;
    while(c){
        a = b;
        b = c;
        c = a % b;
    }
    return b;
}

a × b = GCD(a, b)1 × LCM(a, b)2 성질을 이용하여 최소공배수4도 구할 수 있다.

4. 관련 문제

5. 용어 및 출처