백준

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

하루우울루 2023. 3. 17. 11:34

https://www.acmicpc.net/problem/4134

 

4134번: 다음 소수

정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.

www.acmicpc.net


개발환경은 eclipse를 사용했습니다.

 

Code 

import java.util.*;
import java.io.*;
import java.math.BigInteger;

public class Main
{
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int t = Integer.parseInt(br.readLine()); // 테스트 케이스 입력받음

        while(t-- > 0){ // 테스트 케이스 실행

            long n = Long.parseLong(br.readLine()); 

            var s = new BigInteger(String.valueOf(n)); 

            if(s.isProbablePrime(10)){ // 소수판별 메소드 사용
                System.out.println(n); // 참이라면 출력
            }
            else{ // 거짓이라면 
                System.out.println(s.nextProbablePrime()); // 입력값보다 큰 다음 소수를 알려주는 메소드
            }

        }
        br.close();
    }
}

처음에 소수판별 메서드를 만들고 반복문을 통해 문제를 풀었다.

제출 시 시간초과가 나서 찾아보니 BigInteger라는 것과 isProbablePrime과 nextProbablePrime 메서드가 있다는 것을 알게 되었다.

 

이런 메서드들이 있는 것을 알고 쉽게 풀 수 있었다.