최소공배수
=두 수의 곱
/최대 공약수
공식을 이용하여 인수로 전달받은 N개의 수들의 최소공배수를 구합니다. 최대 공약수는 유클리드 호제법을 이용합니다.
const gcd = (a, b) => {
while (b > 0) {
let temp = b;
b = a % b;
a = temp;
}
return a;
}
2개의 자연수
a,b
에 대해서a
를b
로 나눈 나머지를r
이라 하면 a와 b의 최대공약수는 b와 r의 최대 공약수와 같다.
const lcm = (a, b) => {
return (a * b) / gcd(a, b);
}
최소공배수를 구하는 공식은 두 수를 곱한 값을 두 수의 최대공약수로 나눈 값과 같다.
const solution = arr => {
let answer = 1;
for (let i = 0; i < arr.length; i++) {
answer = lcm(answer, arr[i]);
}
return answer;
}
인수로 전달받은 배열을 반복문으로 순회하면서
lcm
의 첫 번째 매개변수로 누적된 최소공배수를 전달하고 두 번째 매개변수에는 배열의 요소를 차례로 전달합니다. 배열을 모두 순회하였을 때 배열 요소들의 최소공배수가answer
에 담기게 됩니다.