Algorithm/Javascript

[프로그래머스] 230922 코딩테스트 연습

보라해바라기 2023. 9. 22. 21:24
SMALL

소수 찾기 (시간복잡도 고려해서) 

* 에라토스테네스의 체 : 

// 에라토스테네스의 체
function solution(n) {
    var answer = 0;
    
    function eratostenes(m) {
        // 0과 1은 소수에서 제외
        let arr = new Array(m+1).fill(true).fill(false, 0, 2);

        // i*i >>> 11^2가 120보다 큰 경우는 의미가 없다
        for(let i=2 ; i*i <= m ; i++) {
            if(arr[i]){
                for(let j=i*i; j<=m; j+=i) {
                    arr[j] = false; // 배수 제거
                }
            }
        }
        return arr;
    }
    
    let isPrimes = eratostenes(n);
    answer = isPrimes.filter(e => e).length;
    
    return answer;
}
728x90