반응형
 

1644번: 소수의 연속합

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000)

www.acmicpc.net

에라토스테네스의 체를 이용하여 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

+ Recent posts