Programming/Javascript
Javascript 최대공약수(GCD), 최소공배수(LCM)
나쵸캣
2022. 12. 5. 22:53
반응형
최대공약수(Greatest Common Divisor)
: 두 수 이상의 수의 공통인 약수 중 가장 큰 수
최소공배수(Least Common Multiple)
: 두 수 이상의 수의 공통인 배수 중 가장 작은 수
최대공약수와 최소공배수를 구할 때 유클리드 호제법을 이용한다.
유클리드 호제법(Euclidean algorithm)
: 두 양의 정수 a, b (a > b)에 대하여 a = bq + r(0 ≦ r < b)이라 하면, a, b의 최대공약수는 b, r의 최대공약수와 같다. 즉, r = 0 이라면, a, b의 최대공약수는 b가 된다.
유클리드 호제법을 이용하여 최대공약수를 구하는 소스코드는 다음과 같다.
// 최대공약수
function GCD(a, b) {
var r = a % b;
if(r == 0){
return b;
}
return GCD(b, r)
}
// 숏코드
const GCD = (a, b) => a % b === 0 ? b : GCD(b, a % b)
최소공배수는 a * b = 최대공약수 * 최소공배수를 활용하여 구한다. 즉, 다음과 같이 구할 수 있다.
// 최소공배수
const LCM = (a, b) => (a * b) / GCD(a, b)
반응형