题目的意思是:给你一个数N,求由连续的m个素数之和等于N的组数。
这题很简单,一开始没看到题目是连续的素数,所以一开始想用深搜来做,可是不行,后来再看了题目,才知道是连续的素数,是连续的素数就简单很多了。
下面的是 AC的代码:
#include <iostream> using namespace std; int prime[10005]; int main() { int i, j, k; for(i = 0; i < 10005; i++) prime[i] = 1; prime[0] = 0; prime[1] = 0; for(i = 2; i < 10005; i++) //判断10005以内的所以素数。 { if(prime[i]) { for(j = i + i; j < 10005; j += i) prime[j] = 0; } } int count, sum; while(cin >> k && k) { for(i = 2, count = 0; i < 10005; i++) //找有多少组 { if(!prime[i]) continue; for(j = i, sum = 0; sum < k && j < 10005; j++) { if(prime[j]) sum += j; if(sum == k) { count++; break; } } } cout << count << endl; } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
北大ACM2739——Sum of Consecutive Prime Numbers
原文地址:http://blog.csdn.net/qq_25425023/article/details/46802261