https://www.acmicpc.net/problem/1929
문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
코드
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = require('fs').readFileSync(filePath).toString().trim().split(' ');
let [num1, num2] = input.map(item => parseInt(item));
let isPrime = true;
let sqrNum = Math.sqrt(num1);
while (num1 <= num2) {
isPrime = true;
sqrNum = Math.sqrt(num1);
for (let i = 1; i < sqrNum; i++) {
if (num1 % (i + 1) == 0) {
isPrime = false;
break;
}
}
if (num1 != 1 && num1 != 2) {
if (isPrime) {
console.log(num1);
}
} else if (num1 == 2) {
console.log(2);
}
num1++;
}
풀이
에라토스테네스의 체를 이용하지않고 문제를풀면 시간초과가 나온다.
에라토스테네스의 체는 주어진 수의 제곱근까지만 나누어서 소수를 구하는 방법이다.
num1에 제곱근을 구한뒤 2부터 그 제곱근까지 나누어서 0이 나오면 소수가아니고 0이 나오지 않는다면 소수가된다.
'baekjoon' 카테고리의 다른 글
[Baekjoon] 2563번 : 색종이 문제풀이 (Node.js) (0) | 2023.06.23 |
---|---|
[Baekjoon] 2108번 : 통계학 문제풀이 (Node.js) (0) | 2023.06.23 |
[Baekjoon] 1978번 : 소수 찾기 문제풀이 (Node.js) (0) | 2023.06.22 |
[Baekjoon] 1427번 : 소트인사이드 문제풀이 (Node.js) (0) | 2023.06.22 |
[Baekjoon] 1181번 : 단어정렬 문제풀이 (Node.js) (0) | 2023.06.22 |