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

JavaScript에서 사용자 정의 함수로 소수(Prime Number) 판별하기

JavaScript에서는 직접 만든 사용자 정의 함수를 통해 특정 숫자가 소수(prime number)인지 손쉽게 판별할 수 있습니다. 소수란 1과 자기 자신 외에는 약수를 가지지 않는 2 이상의 자연수를 말하며, 2, 3, 5, 7, 11 등이 대표적인 예입니다.

소수 판별 로직

소수 여부를 확인하는 기본 원리는 다음과 같습니다.

  • 숫자가 2보다 작으면 소수가 아닙니다.
  • 2부터 해당 숫자의 제곱근(√n)까지 차례대로 나누어 보고, 하나라도 나누어떨어지면 소수가 아닙니다.
  • 끝까지 나누어떨어지지 않는다면 그 숫자는 소수입니다.

제곱근까지만 검사해도 충분한 이유는, n = a × b 형태로 분해될 때 a와 b 중 하나는 반드시 √n 이하이기 때문입니다. 이 방식은 n/2까지 모두 검사하는 방법보다 불필요한 반복을 줄여 실행 속도가 크게 향상됩니다.

예제 코드

다음은 숫자가 소수인지 검사하는 사용자 정의 함수의 전체 코드입니다.

function checkNumberIsPrime(number) {
    // 2 미만의 숫자는 소수가 아님
    if (number < 2) {
        return false;
    }
    // 2부터 제곱근까지 나누어떨어지는지 확인
    for (let start = 2; start * start <= number; start++) {
        if (number % start === 0) {
            return false;
        }
    }
    return true;
}

var number = 11;
if (checkNumberIsPrime(number)) {
    console.log("이 숫자는 소수입니다");
} else {
    console.log("이 숫자는 소수가 아닙니다");
}

코드 설명

  • number % start === 0: 나머지 연산자(%)를 사용해 start로 나누어떨어지는지 확인합니다. 나머지가 0이라면 약수가 존재한다는 뜻이므로 즉시 false를 반환합니다.
  • start * start <= number: start가 number의 제곱근 이하일 때까지만 반복하여 연산 횟수를 최소화합니다.
  • return true: 어떤 수로도 나누어떨어지지 않았다면 소수로 판단합니다.

프로그램 실행 방법

위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.

node fileName.js

여기서는 파일 이름이 demo230.js라고 가정하겠습니다.

실행 결과

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

PS C:\Users\Amit\JavaScript-code> node demo230.js
이 숫자는 소수입니다

11은 1과 자기 자신으로만 나누어떨어지므로 소수로 판별된 것을 확인할 수 있습니다. 같은 방식으로 number 값만 바꾸면 어떤 숫자든 간편하게 소수 여부를 검사할 수 있습니다.