반응형
에라토스테네스의 체를 이용하여 n까지의 모든 소수를 구해놓고, 연속하는 소수들에 대하여 덧셈을 진행하였습니다.
#include <iostream>
#include <vector>
using namespace std;
vector<int> primes;
int n, c = 0;
void setPrimes(int max) {
vector<int> num(max + 1, 1);
for (int i = 2; i < num.size(); i++) {
if (num[i] == 0) continue;
primes.push_back(i);
for (int j = i * 2; j < num.size(); j+=i)
num[j] = 0;
}
}
int main() {
scanf("%d", &n);
setPrimes(n);
for (int i = 0; i < primes.size(); i++) {
int sum = 0;
for (int j = i; sum < n && j<primes.size(); j++) {
sum += primes[j];
if (sum == n) {
c++;
break;
}
}
}
printf("%d", c);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 17070 : 파이프 옮기기 1 (0) | 2021.11.11 |
---|---|
백준 16916 : 부분 문자열 (0) | 2021.11.11 |
백준 12781 : PIZZA ALVOLOC (0) | 2021.11.11 |
백준 12784 : 인하니카 공화국 (0) | 2021.11.11 |
백준 17609 : 회문 (0) | 2021.11.11 |