Skip to content
On this page

최소공배수, 최대공약수

최대공약수(Greatest Common Division, GCD)는 유클리드 호제법에 의해서 다음과 같이 구할 수 있습니다.

2개의 자연수(또는 정수) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다.

js
// 단, y < x
const getGcd = (x, y) => {
  if (x % y === 0) {
    return y;
  }

  return getGcd(y, x % y);
};

최소공배수(Least Common Multiple, LCM)은 아래와 같은 성질로 간단하게 구할 수 있습니다.

두 수 a, b의 최대공약수를 G, 최소공배수를 L이라고 한다면 a x b = G x L 이다.

js
// 단, y < x
const getLcm = (x, y) => {
  return (x * y) / getGcd(x, y);
};