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

JavaScript로 두 숫자 사이의 소수 개수 구하기

문제 정의

두 개의 숫자 a와 b를 인자로 받아, 두 숫자 사이(경계값 포함)에 존재하는 소수의 총 개수를 반환하는 JavaScript 함수를 작성해야 합니다.

예를 들어, a = 21이고 b = 38이라고 가정해 보겠습니다.

  • 두 수 사이의 소수는 23, 29, 31, 37입니다.

  • 소수의 개수는 4개입니다.

  • 따라서 우리가 만들 함수는 4를 반환해야 합니다.

구현 코드

먼저 특정 숫자가 소수인지 판별하는 isPrime 헬퍼 함수를 만들고, 이를 활용해 주어진 범위 내의 모든 숫자를 검사하는 primeBetween 함수를 작성합니다.

const isPrime = num => {
   let count = 2;
   while(count < (num / 2)+1){
      if(num % count !== 0){
         count++;
         continue;
      };
      return false;
   };
   return true;
};
const primeBetween = (a, b) => {
   let count = 0;
   for(let i = Math.min(a, b); i <= Math.max(a, b); i++){
      if(isPrime(i)){
         count++;
      };
   };
   return count;
};
console.log(primeBetween(21, 38));

코드 설명

  • isPrime 함수: 2부터 해당 숫자의 절반까지 차례대로 나누어 보며, 하나라도 나누어 떨어지는 수가 있으면 즉시 false를 반환합니다. 끝까지 검사했음에도 나누어 떨어지는 수가 없다면 true를 반환하여 소수임을 알립니다.

  • primeBetween 함수: Math.min과 Math.max를 활용해 두 수 중 작은 값부터 큰 값까지 순서대로 순회하면서, 각 숫자가 소수인지 확인할 때마다 카운트를 증가시킵니다. 최종적으로 누적된 카운트를 반환합니다.

실행 결과

콘솔 출력 결과는 다음과 같습니다.

4