https://www.acmicpc.net/problem/1929
isPrime
함수를 만들어 isPrime이면 console.log
에 출력하는 방식으로 풀이const isPrime = (num) => {
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString();
const [m, n] = input.split(" ").map(Number);
const isPrime = (num) => {
if (num < 2) return false; // 추가
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
for (let i = m; i <= n; i++) {
if (isPrime(i)) console.log(i);
}
에라토스테네스의 체(Sieve of Eratosthenes) 알고리즘을 사용하면 좀 더 효율적으로 문제를 해결할 수 있음
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString();
const [m, n] = input.split(" ").map(Number);
const primeCheck = Array(n + 1)
const prime = []
primeCheck[0] = 1 // 0은 소수가 아님
primeCheck[1] = 1 // 1도 소수가 아님
for (let i = 2; i * i <= n; i++) {
if (!primeCheck[i]) {
for (let j = i * i; j <= n; j += i) {
primeCheck[j] = 1 // i의 배수는 소수가 아님
}
}
}
for (let i = m; i <= n; i++) {
if (!primeCheck[i]) prime.push(i)
}
console.log(prime.join('\n'))
primeCheck[i] === 1
이면 소수가 아님j = i * i
부터 시작하는 이유prime.join('\n')
을 사용해 console.log
호출 최적화