도영스 공간

소수 구하기 node.js 본문

알고리즘 문제 풀이/백준

소수 구하기 node.js

dogdogdodo 2022. 5. 4. 21:38
반응형

소수 구하기


 

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
2 초 256 MB 165144 46579 32760 26.757%

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

예제 입력 1 복사

3 16

예제 출력 1 복사

3
5
7
11
13
 

let input = require('fs').readFileSync('/dev/stdin').toString().split(' ');


let N =Number(input[0]);
let M =Number(input[1]);

let isTrue = Array(M + 1).fill(true);
// [true, true, true, true,
//   true, true, true, true,
//   true, true, true, true,
//   true, true, true, true,

isTrue[0] = isTrue[1] =false;
//   true]  0과 1은 소수가 아니므로 false값으로 바꿔준다.
// [
//     false, false, true, true,
//     true,  true,  true, true,
//     true,  true,  true, true,
//     true,  true,  true, true,
//     true
//   ]


    //2부터 시작, 주어진 값 N의 제곱근까지 i의 배수들을 모두 false로 만들어준다.
    for(let i =2; i<=Math.ceil(Math.sqrt(M));i++){
        if(isTrue[i]){
            let m =2;
            while(i * m <= M){
                isTrue[i*m]=false;
                m++;
            }
        }
}

const answer=[]
for(let n =N; n<= M; n++){
    if(isTrue[n]){
        answer.push(n)
    }
}
console.log(answer.join('\n'))
728x90
반응형
Comments