[백준] 4143번: 다음 소수 (JAVA)
2022. 1. 20. 08:57ㆍ알고리즘
https://www.acmicpc.net/problem/4134
4134번: 다음 소수
정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
www.acmicpc.net
문제 설명
이 문제는 24039번 2021은 무엇이 특별할까?와 거의 비슷한 문제이다. 입력받은 수와 같거나 큰 소수를 구하는 문제이다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Main {
static boolean prime[] = new boolean[10004002];
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
long num = Long.parseLong(br.readLine());
var bi = new BigInteger(String.valueOf(num));
if (bi.isProbablePrime(10)) {
System.out.println(num);
} else {
System.out.println(bi.nextProbablePrime());
}
}
br.close();
}
}
코드 설명
처음에는 List를 써서 풀려고 하였으나 자꾸 ArrayIndexOutOfBounds 예외가 튀어나와서 BigInteger를 사용해서 문제를 풀었다. isProbablePrime(10)은 만약 입력값이 소수인지 아닌지 판별하는 것이고, nextProbablePrime은 입력값보다 큰 바로 다음 소수를 알려주는 메소드이다.
'알고리즘' 카테고리의 다른 글
[백준] 2902번: KMP는 왜 KMP일까? (JAVA) (0) | 2022.01.31 |
---|---|
[백준] 10987번: 모음의 개수 (JAVA) (0) | 2022.01.23 |
[백준] 1920번: 수 찾기 (JAVA) (0) | 2022.01.18 |
[백준] 5800번: 성적 통계 (JAVA) (0) | 2022.01.17 |
[백준] 15688번: 수 정렬하기 5 (JAVA) (0) | 2022.01.16 |