Skip to content

Commit 7864004

Browse files
committed
BOJ_3896 : 소수 사이 수열
1 parent dc5413b commit 7864004

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
6+
public static final int MAX = 1299710;
7+
8+
public static void main(String[] args) throws IOException {
9+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
List<Integer> primeNumber = getPrimeNumber();
11+
int T = Integer.parseInt(br.readLine());
12+
for (int i = 0; i < T; i++) {
13+
int num = Integer.parseInt(br.readLine());
14+
if (num == 1) {
15+
System.out.println('0');
16+
continue;
17+
}
18+
binarySearch(primeNumber, num);
19+
}
20+
}
21+
22+
public static void binarySearch(List<Integer> primeNumber, int num) {
23+
int left = 0;
24+
int right = primeNumber.size() - 1;
25+
while (left <= right) {
26+
int mid = (left + right) / 2;
27+
int primeNum = primeNumber.get(mid);
28+
if (num <= primeNum) {
29+
right = mid - 1;
30+
if (num == primeNum) {
31+
System.out.println('0');
32+
return;
33+
}
34+
} else {
35+
left = mid + 1;
36+
}
37+
}
38+
int answer = primeNumber.get(left) - primeNumber.get(left - 1);
39+
System.out.println(answer);
40+
}
41+
42+
public static List<Integer> getPrimeNumber() {
43+
boolean[] check = new boolean[MAX];
44+
List<Integer> primeNumber = new ArrayList<>();
45+
for (int i = 2; i < MAX; i++) {
46+
if (check[i]) {
47+
continue;
48+
}
49+
primeNumber.add(i);
50+
for (int j = i; j < MAX; j += i) {
51+
if (!check[j]) {
52+
check[j] = true;
53+
}
54+
}
55+
}
56+
return primeNumber;
57+
}
58+
}

0 commit comments

Comments
 (0)