두 개의 숫자를 받아들이고 최소 공배수를 반환하는 함수를 작성해야 합니다.
최소공배수(LCM)
두 수와 b의 최소 공배수는 와 b로 나눌 수 있는 가장 작은 양의 정수입니다.
예를 들어 − 6과 8의 LCM은 24입니다. 24는 6과 8로 나누어지는 가장 작은 양의 정수이기 때문입니다.
LCM 계산 방법
두 숫자 a와 b의 최소공배수를 계산하는 여러 방법 중 하나는 a와 b의 곱을 a와 b를 모두 나누는 최대 정수(최대공약수 또는 GCD라고도 함)로 나누는 것입니다.
6과 8의 경우 곱은 48이고 둘을 나누는 가장 큰 정수는 2이므로 LCM은 -
(6*8)/2 = 24
이러한 사항을 명확하게 했으면 이제 코딩 부분으로 이동하겠습니다. −
예시
const lcm = (a, b) => { let min = Math.min(a, b); while(min >= 2){ if(a % min === 0 && b % min === 0){ return (a*b)/min; }; min--; }; return (a*b); }; console.log(lcm(6, 8)); console.log(lcm(16, 18)); console.log(lcm(0, 8)); console.log(lcm(11, 28)); console.log(lcm(18, 34));
코드 이해
두 숫자를 정확히 나누는 가장 큰 정수는 여전히 두 숫자 중 작은 숫자와 같거나 작기 때문에 LCM을 계산하고 있으므로 더 작은 숫자에서 2까지 감소하는 루프를 실행합니다.
반복에서 두 숫자를 나누는 숫자를 찾으면 감소 루프에 있기 때문에 두 숫자를 나누는 가장 큰 숫자임을 보장할 수 있으므로 LCM을 사용하여 바로 그곳으로 돌아갑니다.
전체를 반복하는 경우 해당 숫자를 찾지 못했고 1이 둘을 나누는 유일한 숫자이므로(즉, 숫자는 공소임) 제품을 반환하기만 하면 됩니다.
출력
콘솔의 출력은 다음과 같습니다. -
24 144 0 308 306