소수를 판별하는 방법

Hyunwoo Seo·2023년 1월 25일
0

JavaScript

목록 보기
18/31
post-thumbnail

소수(prime number) 란, 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다.

1 은 소수가 될 수 없고, 2는 짝수중 유일한 소수이다.


아래의 함수는 제곱근까지만 확인하는 함수이다.

function isPrime(num) {
    if (num === 1) {
        return false;
    } else if (num === 2) {
        return true;
    } else {
        for (let i = 2; i <= Math.floor(Math.sqrt(num)); i++) {
            if (num % i === 0) {
                return false; 
            }
        }
        return true;
    }
}

함수에 입력값으로 들어가는 num 의 제곱근보다 작은 수에서 안 나눠진다면, 제곱근 보다 큰 수에서도 안나눠지기에 충분하다.


예를 들어, num 이 10 이라면, 10 의 약수는 1, 2, 5, 10 이다.

여기서 1 과 10을 빼면, 2 와 5 가 남게 되는데 이 두 숫자는 2 5 , 5 2 이렇게 몫이 커지면 나누는 값이 작아지고 나누는 값이 커지면 몫이 작아지는 반비례관계이기에 10의 제곱근인 3.16 보다 작은 2에서 나눠졌으므로 더이상 계산을 해볼 필요가 없다.

또 하나, num 이 17 이라면, 17의 제곱근은 대략 4.123 이므로 1을 제외한 2, 3, 4 로 나누어지는지 확인 후 나누어지는게 없다면 그 이상의 값에서도 나누어지는 값이 없기에 소수로 판별하면 된다. (실제로 소수이다.)

0개의 댓글