반응형
백준 4134번 다음 소수 (javascript, node.js)
문제
- 백준 4134번 다음 소수 문제 보러 가기
- 정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
입력
- 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다.
출력
- 각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다.
예제입력 1
3
6
20
100
예제출력 1
7
23
101
문제풀이
- 문제를 봤을 때 무슨 소리지 하고 한 번에 이해 못 함.
- 그냥 입력값이 소수이면 출력하고 아니면 그다음 소수를 출력하는 문제
- 소수를 판별하는 함수를 사용하여 소수이면 출력하고 아니면 입력값을 더하여 반복해서 소수를 찾아주면 되는 문제
// 4134번 다음 소수
// 문제 : 정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
// 주어진 입력값이 소수이면 출력하고 아니면 입력값을 하나씩 더해서 소수를 찾아서 출력
// 소수를 판별할 수 있는 식이 필요
// 입력값이 소수인지 판별하고 아니면 하나씩 더해서 소수를 판별하여 출력
const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("\n");
input.shift(0);
const arr = input.map(Number);
// 소수 판별식
function isPrime(num) {
if (num < 2) {
return false;
}
for (let i = 2; i <= Math.floor(Math.sqrt(num)); i++) {
if (num % i === 0) {
// 한 번이라도 나누어 졌으니 소수가 아니므로 return false
return false;
}
}
// 나눠진 수가 없다면 해당 수는 소수이므로 return true
return true;
}
// 입력 값 길이 만큼 반복
for (i = 0; i < arr.length; i++) {
while (true) {
// 입력값이 소수이면 출력하고 아니면 하나씩 더해서 반복
if (isPrime(arr[i])) {
console.log(arr[i]);
break;
} else {
arr[i]++;
}
}
}
'Algorithm_javascript > 15. 약수, 배수와소수2' 카테고리의 다른 글
# 백준 17103번 골드바흐 파티션 (javascript, node.js) (0) | 2023.07.26 |
---|---|
# 백준 4948번 베르트랑 공준 (javascript, node.js) (0) | 2023.07.24 |
백준 2485번 가로수 (javascrit, node.js, 자바스크립트, 노드) (2) | 2023.05.25 |
백준 1735번 분수합 (javascript, node.js) (0) | 2023.05.24 |
백준 13241번 최소공배수 (javascript, node.js) (0) | 2023.05.24 |