문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
// 소수 구하기
let fs = require('fs');
// let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); // 제출용
let input = fs.readFileSync('input.txt').toString().trim().split('\n'); // vscode 테스트용
const [M,N] = input[0].split(' ').map(Number);
const sol = (M,N) =>{
const primeArr = isPrime(N);
for(let i = M; i<=N;i++){
primeArr[i] ? console.log(i) : null;
}
}
const isPrime = (num) =>{
const arr = new Array(num+1).fill(true);
arr.splice(0,2, false,false);
for (let i = 2; i <= Math.sqrt(num); i++) {
if(arr[i]){
for(let j = i*i; j<=num; j+=i ){
arr[j] = false;
}
}
}
return arr;
}
sol(M,N);
에라토스테네스의 체를 직접 구현하며 이해해볼 수 있었다. 다만 Array를 선언할 때 크기와 조건문의 <= 조건을 주의해야 함을 느꼈다.
'알고리즘 > 백준' 카테고리의 다른 글
[boj 9020] 골드바흐의 추측 - js (0) | 2022.02.28 |
---|---|
[boj 4938] 베르트랑 공준 - js (0) | 2022.02.27 |
[boj 11653] 소인수분해 - js (0) | 2022.02.27 |
[boj 2581] 소수 - js (0) | 2022.02.26 |
[boj 1978] 소수 찾기 - js (0) | 2022.02.26 |