M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
3 16
3
5
7
11
13
// const { json } = require("express/lib/response");
// const fs = require("fs");
// const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
// let input = fs.readFileSync(filePath).toString().split("\n");
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
let M=parseInt(input[0].split(' ')[0].trim())
let N=parseInt(input[0].split(' ')[1].trim())
let primeArray=[]
const isPrime=(x)=>{
let divisors=[];
for (let i=1;i<=Math.ceil(Math.sqrt(x));i++){
if (x%i===0){
divisors.push(i)
divisors.push(x/i)
}
}
if (divisors.length===2){
primeArray.push(x)
}
}
for (let j=M;j<=N;j++){
isPrime(j)
}
primeArray.sort((a,b)=>a-b).map((k)=>console.log(k))
처음에 이렇게 풀었더니 시간 초과가 나왔었다.
const { json } = require("express/lib/response");
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
// const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
let M = parseInt(input[0].split(' ')[0].trim())
let N = parseInt(input[0].split(' ')[1].trim())
let primeArray = []
const isPrime = (x) => {
let divisors = [];
for (let i = 1; i <= Math.ceil(Math.sqrt(x)); i++) {
if (x % i === 0) {
divisors.push(i)
divisors.push(x / i)
}
}
if (divisors.length === 2) {
return true;
}
}
for (let j = M; j <= N; j++) {
if (isPrime(j) === true) {
primeArray.push(j)
}
}
primeArray.sort((a,b)=>a-b).map((k)=>console.log(k))
이건 그냥 틀렸다는데 이유를 모르겠다.
let i=1을 let i=2로 바꿔도 안 된다.
const { json } = require("express/lib/response");
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
// const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
let M = parseInt(input[0].split(' ')[0].trim())
let N = parseInt(input[0].split(' ')[1].trim())
let primeArray = []
const isPrime = (x) => {
if (x !== 1) {
for (let i = 2; i <= Math.ceil(Math.sqrt(x)); i++) {
if (x%i==0&&x/i!==1){
return true
}
}
}
}
for (let j = M; j <= N; j++) {
if (j !== 1) {
if (isPrime(j) !== true) {
primeArray.push(j)
}
}
}
primeArray.sort((a, b) => a - b).map((k) => console.log(k))
다시 풀었떠니 맞았다.