소수의 연속합
링크: https://www.acmicpc.net/problem/1644
처음 소수부터 입력받은 수 n까지 각 case를 판단한다.
각 소수부터 다음의 소수들 합을 구하고 입력받은 수와 같은지 판단한다.
같은 경우만 count하고, 출력한다.
-
정답 코드
#include<iostream> #include<vector> using namespace std; #define bigNum 4000001 bool primeNumber[bigNum]; vector<int> primeList; void setPrime() { for (int i = 2; i < bigNum; i++) { primeNumber[i] = true; } for (int i = 2; i < bigNum; i++) { if (!primeNumber[i]) continue; for (int j = 2 * i; j < bigNum; j += i) { primeNumber[j] = false; } } for (int i = 2; i <= bigNum; i++) { if (primeNumber[i]) { primeList.push_back(i); } } } int n; int count_ = 0; int main() { setPrime(); cin >> n; for (int i = 2; i <= n; i++) { if (primeNumber[i]) { } } for (int i = 0; i < n; i++) { int sum = 0; for (int k = i; k < primeList.size() && sum < n; k++) { sum += primeList[k]; } if (sum == n) count_++; } cout << count_; return 0; }
'ProblemSolving' 카테고리의 다른 글
[BOJ] 1377_버블 소트 (0) | 2021.03.14 |
---|---|
[BOJ] 1354_무한 수열 2 (0) | 2021.03.13 |
[BOJ] 1737_Pibonacci (0) | 2021.03.06 |
[BOJ] 1047_2로 몇 번 나누어질까 (0) | 2021.03.05 |
[BOJ] 1715_카드 정렬하기 (0) | 2021.03.04 |
최근댓글