AC代码(素数筛打一下表然后暴力就好了)
Select Code
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int k , ans[100000];
void getprime(int n)
{
k = 0;
memset(ans, 0, sizeof(ans));
ans[0] = ans[1] = 1;
for(int i = 2; i<=n; i++)
{
if(!ans[i])
for(int j = i*i; j<=n; j+=i)
ans[j] = 1;
}
for(int i = 2; i<=n; i++)
{
if(!ans[i])
ans[k++] = i;
}
ans[k] = '\0';
}
int main()
{
std::ios::sync_with_stdio(false);
int n, i, j;
while(cin>>n&&n!=0)
{
int sm = 0, sum = 0;
getprime(n);
for(i = 0;i<k;i++)
{
sum = 0;
for(j = i;j<k;j++)
{
sum+=ans[j];
if(sum==n)
{
sm++;
break;
}
}
}
printf("%d\n",sm);
}
return 0;
}