
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const [a, b] = fs.readFileSync(path).toString().split(' ').map(Number);
const isPrimeNumber = (n) => {
if (n === 1) return false;
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) return false;
}
return true;
};
for (let i = a; i <= b; i++) {
if (isPrimeNumber(i)) console.log(i);
}
⏰ 소요한 시간 : 10분
처음에는 일반적인 소수 판별로 문제를 풀이했는데 시간초과가 발생했다.
따라서 약수의 특징을 활용해 제곱근까지만 소수를 판별해줬더니 맞았습니다.
물론 이 방법도 정답이지만 n과 m의 범위를 보니 에라토스테네스의 체를 사용하는 것이 더 적합해 보인다. 소수판별에 대한 전체적인 알고리즘은 여기에 포스팅했다.