본문 바로가기
Beakjoon&프로그래머스/Java

[백준/Java] 4134번 다음 소수

by 현장 2025. 12. 26.

-Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BOJ4134 {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));

        int t = Integer.parseInt(br.readLine());

        for (int i = 0; i < t; i++) {
            long n = Long.parseLong(br.readLine());
            // 1을 증가하고 소수인지 확인
            while (!isPrime(n)) {
                n++;
            }
            System.out.println(n);
        }
    }
    // 에라토스테네스의 체로 소수인지 확인
    private static boolean isPrime(long num) {
        // 2 미만인 경우
        if (num < 2) {
            return false;
        }
        // 홀수만 찾아서 2는 빠지므로 계산
        if (num == 2) {
            return true;
        }
        // 2를 위에서 판한하므로 이후에 짝수 제외
        if (num % 2 == 0) {
            return false;
        }
        // 홀수만 돌면서 계산
        for (long i = 3; i * i <= num; i += 2) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}

처음에는 범위를 잘못봐서 int타입으로 받아서 틀렸고 이후에는 시간 초과가 나서 찾아보니 짝수는 제외하고 홀수만 검사하는 것과 2는 따로 설정해 줘야 한다는 것을 알고 해결했습니다.