-
Notifications
You must be signed in to change notification settings - Fork 0
/
Continuous_Sum_Of_Prime.java
61 lines (44 loc) · 1.51 KB
/
Continuous_Sum_Of_Prime.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
public class Continuous_Sum_Of_Prime {
private static int[] valueArr;
private static boolean[] visitArr;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int number = Integer.parseInt(br.readLine());
initVisitArr(number);
mkValueArr(number);
int resultCount = getResultCount(number);
System.out.println(resultCount);
}
private static void initVisitArr(int length) {
visitArr = new boolean[length + 1];
visitArr[0] = true;
visitArr[1] = true;
}
private static void mkValueArr(int number) {
List<Integer> primeList = new LinkedList<>();
for(int i = 2; i <= number; i++) {
if(visitArr[i]) continue;
primeList.add(i);
for(int j = 1; i * j <= number; j++) {
visitArr[i * j] = true;
}
}
valueArr = primeList.stream().mapToInt(Integer::intValue).toArray();
}
private static int getResultCount(int number) {
int count = 0;
for(int i = 0; i < valueArr.length; i++) {
int sum = 0;
for(int j = i; j < valueArr.length; j++) {
sum += valueArr[j];
if(sum == number) count++;
if(sum > number) break;
}
}
return count;
}
}