题目链接:http://poj.org/problem?id=2739
这个题是个简单题,反正是要求有多少个素数序列和,那就先把范围内的所有素数先用一个数组存起来,然后找的时候,外循环控制序列开始的数字,内循环控制序列元素个数和序列和,内循环结束判断该序列是否满足,是则和加一,不是则不做处理。外循环结束输出和,代码如下:
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
using namespace std;
int isPrime(int n)
{
if(n == 2)
return 1;
else
{
for(int i = 2;i <= sqrt(n);i++)
{
if(n % i == 0)
{
return 0;
break;
}
}
return 1;
}
}
int main()
{
int n,prime[10000],x = 0;
for(int i = 2;i < 10001; i++)
{
if(isPrime(i))
{
prime[x++] = i;
}
}
while(scanf("%d",&n) != EOF)
{
int cnt,ans = 0;
if(n == 0) break;
else
{
for(int i = 0;n >= prime[i]; i++)
{
cnt = 0;
for(int j = i;j < x && cnt < n;j++)
{
cnt += prime[j];
}
if(cnt == n) ans++;
}
cout << ans << endl;
}
}
return 0;
}