Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 1부터 n까지 모두 나누어 떨어지는 가장 작은 수 찾기

숫자 하나를 입력받아, 1부터 n까지의 모든 자연수로 나누어 떨어지는 가장 작은 수를 찾는 JavaScript 함수를 작성해 보겠습니다.

예를 들어 다음과 같습니다.

  • n = 4일 경우, 결과값은 12입니다.
  • 12는 1, 2, 3, 4 모든 수로 나누어 떨어지는 가장 작은 수이기 때문입니다.

구현 코드

const smallestMultiple = num => {
   let res = 0;
   let i = 1;
   let found = false;
   while (found === false) {
      res += num;
      while (res % i === 0 && i <= num) {
         if (i === num) {
            found = true;
         };
         i++;
      };
      i = 1;
   };
   return res;
};
console.log(smallestMultiple(2));
console.log(smallestMultiple(4));
console.log(smallestMultiple(12));
console.log(smallestMultiple(15));

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

2
12
27720
360360

코드 동작 원리

이 알고리즘은 입력값 num의 배수를 하나씩 늘려가며, 해당 값이 1부터 num까지의 모든 수로 나누어 떨어지는지 검사합니다. 조건을 만족하는 첫 번째 수를 찾으면 반복을 종료하고 그 값을 반환합니다.

수학적으로 이 문제는 1부터 n까지 자연수들의 최소공배수(LCM)를 구하는 것과 동일합니다. 위 방식은 직관적이고 이해하기 쉽지만, n이 커질수록 반복 횟수가 급격히 늘어나 비효율적일 수 있습니다. 따라서 성능이 중요한 경우에는 유클리드 호제법(GCD)을 활용해 최소공배수를 계산하는 방식을 고려하는 것이 좋습니다.