안녕하세요
[node.js] 4948 베르트랑 공준 (자바스크립트) 기본수학단계2 본문
4948 베르트랑 공준
자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오.
1
10
13
100
1000
10000
100000
0
각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력합니다.
1
4
3
21
135
1033
8392
제출한 답
const input = require("fs").readFileSync("dev/stdin").toString().split("\n").map((x) => x.trim());
function prime(j) {
for (k = 2; k * k <= j; k++) {
if (j == 1) {
return false;
}
if (j % k == 0) {
return false;
}
}
return 1;
}
for (i = 0; i <= input.length - 1; i++) {
let count = 0;
let num = Number(input[i]);
if (num == 0) {
break;
}
for (j = num + 1; j <= num * 2; j++) {
count += prime(j);
}
console.log(count);
}
코드설명
소수판별식에 판별하고자 하는 값을 입력하여, 소수인 경우에 1을 반환할 것입니다.
그리고 반환된 1의 갯수는 n+1부터 n*2 사이의 소수의 갯수가 됩니다. 이를 출력합니다.
function prime(j) {
for (k = 2; k * k <= j; k++) {
if (j == 1) {
return false;
}
if (j % k == 0) {
return false;
}
}
return 1;
소수판별식입니다. j가 소수라면 1을 반환합니다.
소수판별식입니다. j가 소수라면 1을 반환합니다.
for (i = 0; i <= input.length - 1; i++) {
let count = 0;
let num = Number(input[i]);
if (num == 0) {
break;
}
count에 반환 받은 1을 더할 것입니다.
테스트케이스[1, 10, 13, ..., 100000, 0]를 순서대로 입력 받습니다.
주어진 조건에 따라 0을 입력받으면 프로그램을 종료합니다.
테스트케이스[1, 10, 13, ..., 100000, 0]를 순서대로 입력 받습니다.
주어진 조건에 따라 0을 입력받으면 프로그램을 종료합니다.
for (j = num + 1; j <= num * 2; j++) {
count += prime(j);
}
소수판별식에 입력할 값입니다. n + 1 부터 2 * n 사이의 수에 소수가 몇 개인지 구합니다.
만일 10을 입력받았다면, 11~20의 수를 소수판별식에 순서대로 입력하게 됩니다.
소수로 판별된 경우에는 count +1 을 합니다.
만일 10을 입력받았다면, 11~20의 수를 소수판별식에 순서대로 입력하게 됩니다.
소수로 판별된 경우에는 count +1 을 합니다.
console.log(count);
}
입력받은 [1, 10, 13, ..., 100000]값의 소수의 갯수인 count를 차례대로 출력합니다.
'백준 자바스크립트' 카테고리의 다른 글
[node.js] 10870 피보나치 수 (자바스크립트) 재귀와 반복문 차이 (0) | 2022.06.25 |
---|---|
[node.js] 10872 팩토리얼 (자바스크립트) 재귀 단계 (0) | 2022.06.24 |
[node.js] 1929 소수구하기 (자바스크립트) 기본수학단계2 (0) | 2022.06.14 |
[node.js] 11653 소인수분해 (자바스크립트) 기본수학단계2 (0) | 2022.06.14 |
[node.js] 2581 소수 (자바스크립트) 기본수학단계2 /cfr (0) | 2022.06.08 |