https://www.acmicpc.net/problem/1644
1644번: 소수의 연속합
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000)
www.acmicpc.net
에라토스테네스의 체를 사용해서 푼 간단한 문제이다.
에라토스테네스의 체를 사용해서 2부터 입력된 숫자까지의 소수를 구하여 새로운 Array에 저장하고,
찾은 소수와 합해서 입력된 숫자가 되는 다른 소수가 있는지 찾는다.
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
ArrayList<Integer> primes = new ArrayList<>();
boolean[] isNotPrime = new boolean[N+1];
isNotPrime[0] = isNotPrime[1] = true;
for(int i=2; i<=N; i++){
if(!isNotPrime[i]){
primes.add(i);
for(int j=i*2; j<=N; j+=i){
isNotPrime[j] = true;
}
}
}
int count = 0;
int p1 = 0, p2 = 0;
while(p1<primes.size()){
int sum = 0;
while(p2<primes.size()){
sum += primes.get(p2);
if(sum > N) {
p1++;
p2 = p1;
break;
}
else if(sum == N){
count ++ ;
p1 ++;
p2 = p1;
break;
}
else {
p2++;
}
}
if((p1+1)==primes.size()&&p2==primes.size()) {
break;
}
}
System.out.println(count);
}
}
'알고리즘' 카테고리의 다른 글
[백준 - 9202] Boggle - Java (0) | 2022.02.14 |
---|---|
[백준 - 7578] 공장 - Java (0) | 2022.02.09 |
[백준 - 2243] 사탕상자 - Java (0) | 2022.02.08 |
[백준 - 2042] 구간 합 구하기 - Java (0) | 2022.02.08 |
[백준 - 1202] 보석 도둑 - Java (0) | 2022.02.07 |