#include<stdio.h>
int prime[1500];
void init(void)
{
int a[11000],i,j=0;
for(i=0;i<11000;i++)
a[i]=1;
a[0]=0;
a[1]=0;
for(i=2;i<11000;i++)
{
if(a[i])
{
for(j=i+i;j<11000;j+=i)
a[j]=0;
}
}
j=0;
for(i=0;i<11000;i++)
if(a[i])
{
prime[j]=i;
j++;
}
}
void solve(int a)
{
int front=0,rear=0,ans=0,res=0;
while(1)
{
if(prime[rear]>a&&prime[front]>a)
break;
if(ans==a)
{
res++;
ans-=prime[front];
front++;
}
else
{
if(ans>a)
{
ans-=prime[front];
front++;
}
else
{
ans+=prime[rear];
rear++;
}
}
}
printf("%d\n",res);
}
int main(void)
{
int x;
init();
while(~scanf("%d",&x)&&x)
{
solve(x);
}
}
poj 2379 (快速建立素数表+尺取法)
最新推荐文章于 2019-07-29 09:39:33 发布