[알고리즘] 최대 공약수와 최소 공배수

김기수·2025년 7월 9일

최대 공약수 (Greatest Common Divisor, GCD)

  • 두 자연수의 공통된 약수 중 가장 큰 공약수를 최대 공약수라 한다.
    8의 약수 1 2 4 8
    12의 약수 1 2 3 4 6 12
    공통된 약수 1 2 4
    최대 공약수 4

유클리드 호제법

  • 유클리드 호제법은 a>b일때 a, b를 나눈 나머지를 r이라고 하면,
    r이 0일때 b가 최대 공약수가 되는 정리이다.
  • 만약 r이 0이 아니라면, a에 b를 넣고 b에 n의 값을 넣고 n이 0이 될 때까지 반복하면 된다.
  • a % b = r1
    b % r1 = r2
    r1 % r2 = r3
    ...
    r(n) % r(n+1) = 0
    최대 공약수는 r(n+1)
  • 코드
int gcd(int a,int b){
	if(b==0) return a;
    return gcd(b,a%b);
}

최소 공배수 (Least Common Multiple, LCM)

  • 두 자연수의 공통된 배수 중 가장 작은 공배수를 최소 공배수라 한다.
    8의 배수 8 16 24 32 40 48...
    12의 배수 12 24 36 48 ...
    공통된 배수 24, 48
    최소 공배수 24

공식

  • 최소 공배수는 두 자연수의 곱 / 최대 공약수로 구할 수 있다.
  • 코드
lcm = a * b / gcd(a, b);
profile
백엔드 개발자

0개의 댓글