@feiyangyang
2022-06-06T07:32:16.000000Z
字数 729
阅读 383
代码
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int f[1300],ans[11000];
int a[110000];
int sushu(int x)
{
if(x<=1) return 0;
int t=sqrt(x);
for(int i=2;i<=t;i++)
{
if(x%i==0) return 0;
}
return 1;
}
int main()
{
// #################注意#########注意################
freopen("prime.in","r",stdin);
// #################注意#########注意################
freopen("prime.out","w",stdout);
// #################注意#########注意################
memset(ans,0,sizeof(ans));
int n,max=0,d=0,len=0;
scanf("%d",&n);f[0]=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(max<a[i]) max=a[i];
}
while(d<=max)
{
d++;
while(sushu(d)==0) d++;
len++;
f[len]=d+f[len-1];
for(int i=0;i<len;i++)
{
if(f[len]-f[i]<=max)
{
ans[f[len]-f[i]]++;
}
}
}
for(int i=1;i<=n;i++) printf("%d\n",ans[a[i]]);
}