[백준 1929] 냅다 시작 Day7 - 기본 수학 2

김민지·2022년 12월 25일
0

냅다 시작 백준

목록 보기
17/118

[백준 1929] 기본 수학2 4단계. 소수 구하기

✨ 문제 ✨

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

= 입력 =

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

= 출력 =

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

= 예제 입력 1 =

3 16

= 예제 출력 1 =

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))

다시 풀었떠니 맞았다.

💡💡 기억해야 할 점

profile
이건 대체 어떻게 만든 거지?

0개의 댓글