题意:
给一个n,有多少种连续的素数和加起来等于n。
思路:
打素数表,然后直接暴力。
代码:
#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"queue"
#include"algorithm"
#include"iostream"
#include"map"
#include"stack"
#include"vector"
#define ll __int64
#define inf -999999999999999999LL
using namespace std;
#define MAXN 10007
bool mark[MAXN];
int ss[MAXN/3],sscnt;
void ssb()
{
sscnt=0;
memset(mark,false,sizeof(mark));
mark[0]=mark[1]=true;
for(int i=2; i<=MAXN; i++)
{
if(!mark[i])
{
for(int j=i+i; j<=MAXN; j+=i) mark[j]=true;
ss[sscnt++]=i;
}
}
return ;
}
int main()
{
ssb();
int n;
while(scanf("%d",&n),n)
{
int ans=0;
for(int i=0;i<sscnt;i++)
{
int tep=0;
for(int j=i;;j++)
{
if(tep>n) break;
tep+=ss[j];
if(tep==n) ans++;
}
}
printf("%d\n",ans);
}
return 0;
}