题意: 给你一个数 问你它可以由连续素数组成 问由多少种方案
思路: 连续序列 首先想到Two-pomiter + 素数筛选(打表) (注意输入0 break WA一千万次才发现QAQ )
ACcode:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 10000
bool Notprime[N+10];
int prime[N+10];
int k = 0;
void Prime()
{
for (int i = 2; i <= N; i++)
{
if (Notprime[i] == false)
prime[++k] = i;
for (int j = 1; j <= k; j++)
{
if (i*prime[j] > N)
break;
Notprime[i*prime[j]] = true;
}
}
}
int main()
{
int n;
Prime();
while (scanf("%d",&n)!=EOF)
{
if (n == 0)
break;
int l = 1, r = 1, cnt = 2, ans = 0;
while (1)
{
while (r <= k && cnt < n)
{
r++;
cnt += prime[r];
}
if (cnt < n)
break;
if (cnt == n)
ans++;
cnt -= prime[l];
l++;
}
printf("%d\n", ans);
}
return 0;
}