문제: https://www.acmicpc.net/problem/4134
이 문제는 Java의 BigInteger 클래스에서 제공하는 메소드로 쉽게 해결 가능하다.
C++로 작성하면 직접 소수를 구하는 로직을 작성해야 하지만 Java의 BigInteger에서는 해당 로직을 메소드로 제공합니다.
다만 문제를 제대로 안 읽으면 틀리는데 입력값보다 크거나 '같은' 소수를 찾는 것이므로
입력 값이 바로 소수라면 해당 값을 출력해야 합니다.
특히 현재 값이 소수인지 아닌지 판단하는 메소드인 isProbablePrime의 파라미터값이 있는데
해당 내용은 다음 링크를 참고하세요.
소스 코드를 참고하세요. 소스 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); for (int i = 0; i < n; ++i) { long testValue = scanner.nextLong(); BigInteger nextPrimeNumber = new BigInteger(String.valueOf(testValue)); if (nextPrimeNumber.isProbablePrime(10)) { // 입력 값이 소수면 그대로 출력 System.out.println(nextPrimeNumber); } else { // 입력 값이 소수가 아니면 다음 소수를 구해서 출력 System.out.println(nextPrimeNumber.nextProbablePrime()); } } scanner.close(); } } | cs |