백준
백준[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 메서드가 있다는 것을 알게 되었다.
이런 메서드들이 있는 것을 알고 쉽게 풀 수 있었다.