
题目大意:一些整数可以表示成一个连续素数之和,给定一个整数要你找出可以表示这一个整数的连续整数序列的个数
方法:打表,然后用游标卡尺法即可
#include <iostream>
#include <functional>
#include <algorithm>
#define MAX_N 10010 using namespace std; static int primes_set[MAX_N], flag[MAX_N], p_sum; void inivilize(void);
void solve(const int); int main(void)
{
inivilize();
int n; while (~scanf("%d", &n))
{
if (n == )
break;
solve(n);
}
return EXIT_SUCCESS;
} void solve(const int n)
{
int s, t, sum, ans = ;
s = t = sum = ; while ()
{
while (primes_set[t] <= n && sum < n)
sum += primes_set[t++];
if (sum == n)
ans++;
if (sum < n)
break;
sum -= primes_set[s++];
}
printf("%d\n", ans);
} void inivilize(void)
{
int i = , j; memset(flag, , sizeof(flag)); for (; i < MAX_N; i++)
{
if (!flag[i])
primes_set[p_sum++] = i;
for (j = ; j < p_sum && primes_set[j] * i < MAX_N; j++)
flag[primes_set[j] * i] = ;
}
}