초보 개발자의 일기

JS 소수 판별법 본문

코딩테스트/JS 알고리즘 문제(JS)

JS 소수 판별법

판다꼬마 2023. 10. 21. 22:21
728x90

JS에서 소수를 판별할 수 있는 방법은 총 3가지가 있다.

 

1. 모든 수로 나누어가며 판별하기

 

2. 각 숫자의 절반만큼만 나누어가며 판별하기

 

3. 각 숫자의 제곱근까지 나누어가며 판별하기

 

 

1번

일단 숫자가 2면 소수이므로 true로 리턴

 

그 후 각 숫자까지 모든 숫자로 나누어서 0이 되면 false로 리턴

 

해당하지 않으면 소수이므로 true리턴

    function isPrime(num){
        if(num===2) return true;
        
        for(let i = 2; i<num; i++){
            if(num % i === 0){
                return false;
            }
        }
        return true;
    }

시간복잡도 O(N)

 

2번

1번과 비슷한 방법이지만 숫자가 반으로 줄어들어 더 빠르게 돌릴 수 있다.

    function isPrime(num){
        if(num===2) return true;

        for(let i = 2; i<=num/2; i++){
            if(num % i === 0){
                return false;
            }
        }
        return true;
    }

시간복잡도 O(N)

3번

3번이 가장 효율적인데 그 수의 제곱근까지만 나누어보고 그 뒤는 안 나누는 방법이다.

제곱근보다 작은 수 에서 안나누어지면 제곱근보다 큰 수에서 나누어질 수가 없기 때문에 제곱근까지만 나누는 것이다.

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

 

시간복잡도 O( N) 

728x90

'코딩테스트 > JS 알고리즘 문제(JS)' 카테고리의 다른 글

최대 매출  (1) 2023.01.14
연속 부분수열2  (0) 2023.01.13
연속 부분수열 1  (0) 2023.01.11
두 배열 합치기  (0) 2023.01.10
K번째 큰 수  (0) 2023.01.09