@feiyangyang
2022-06-06T07:32:16.000000Z
字数 729
阅读 478
代码
#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]]);}