//1_2_2: Sum of Consecutive Prime Numbers 连续素数之和 POJ2739
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const int maxn = 2000;
int isprime(int n)
{
int i;
if(n == 2) return 1;
int sq = (int)sqrt((double)n) + 1;
for(i = 2;i < sq;i ++) if(n % i == 0) return 0;
return 1;
} //10000以内一共有1229个质数
int main()
{
int i,j,sum,num,cnt = 0,count,prime[1300];
for(i = 2;i <= 10000;i ++) if(isprime(i)) prime[cnt ++] = i;
while(1)
{
scanf("%d",&num);
if(num == 0) break;
count = 0;
for(i = 0;prime[i] <= num;i ++)
{
sum = 0;
j = i;
while(sum < num) sum += prime[j++];
if(sum == num) count ++;
}
printf("%d\n",count);
}
return 0;
}
/*测试结果:通过POJ2739检测
2
1
3
1
17
2
41
3
20
0
666
0
12
1
53
2
0
请按任意键继续. . .
*/
POJ2739 Sum of Consecutive Prime Numbers
最新推荐文章于 2021-11-18 21:09:34 发布