이해는 쉬운 문제이다.
나는 n까지 소수의 배열을 만들어 놓고 시작 인덱스를 0부터 시작해서 인덱스 0, 1, 2 쭉 더하면서 n을 넘으면 다시 시작 인덱스를 1로 시작해서 1, 2, 3 쭉 더하고 같으면 count를 올려주고 break를해서 인덱스를 2로 시작... 이런식으로 반복했다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Test4{
public static List<Integer> sosuList = new ArrayList<>();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for (int i = 2; i <= n; i++) {
if (sosu(i)) {
sosuList.add(i);
}
}
// System.out.println(sosuList);
int start = 0;
int count = 0;
int sum = 0;
while(start <= n){
for(int i=start;i< sosuList.size();i++){
sum += sosuList.get(i);
if(sum == n){
count++;
sum = 0;
break;
}
if(sum > n){
sum = 0;
break;
}
}
start++;
}
System.out.println(count);
}
//에라토스테네스의 체
public static boolean sosu(int n){
for(int i=2;i<=Math.sqrt(n);i++){
if(n % i == 0) return false;
}
return true;
}
}