백준

[백준] 4134번 : 다음 소수 - JAVA

doomole 2023. 9. 12. 10:38
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