您的位置:首页 > 其它

POJ-2739-Sum of Consecutive Prime Numbers

2013-08-06 17:35 351 查看
这个题要求求出一个素数能够有多少种连续的素数和表示。

思路:

1、先筛选出素数。

2、维护一个队列,进行更新即可

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=10001;
int n,pri[maxn],cnt=0;
bool ispri[maxn];
void Init()
{
ispri[1]=1;
cnt=0;
for(int i=2;i<maxn;i++)
{
if(!ispri[i])
pri[cnt++]=i;
for(int j=2;i*j<maxn;j++)
ispri[i*j]=1;
}
}
int main()
{
Init();
while(scanf("%d",&n)&&n)
{
int ans=0,sum=0,front=0,last=0;
while(front<=last&&last<cnt)
{
if(pri[last]>n)
break;
sum+=pri[last++];
while(sum>n)
sum-=pri[front++];
if(sum==n)
ans++;
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: