728x90
문제
정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다.
출력
각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다.
풀이
가장 간단한 소수 구하는 방법으로 수를 2부터 그 수의 제곱근까지로 나누는 방법을 사용했다.
수를 수로 나누어 떨어진다면 그때의 몫은 반드시 그 수의 제곱근보다 작기 때문이다.
입력받은 수가 0, 1, 2일 경우 가장 첫번째 소수는 무조건 2이기 때문에 2를 출력한다.
정수의 범위가 크기 때문에 long으로 입력받아 처리한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for(int i = 0; i < n; i++) {
long num = Long.parseLong(br.readLine());
if(num == 0 || num == 1 || num == 2) {
System.out.println(2);
continue;
}
while(true) {
boolean isBreak = true;
double d = Math.sqrt((double)num);
for(long j = 2; j <= d; j++) {
if(num % j == 0) {
isBreak = false;
break;
}
}
if(isBreak) {
System.out.println(num);
break;
}
num++;
}
}
}
}
'백준' 카테고리의 다른 글
[백준] 4948번 : 베르트랑 공준 - JAVA (1) | 2023.09.12 |
---|---|
[백준] 1929번 : 소수 구하기 - JAVA (0) | 2023.09.12 |
[백준] 2485번 : 가로수 (1) | 2023.09.07 |
[백준] 1735번 : 분수 합 (0) | 2023.09.07 |
[백준] 13241 : 최소공배수 (0) | 2023.09.07 |