/* 题意中文题 分析:打表建立素数表,若是素数下标为0,不是素数下表为1 若vis[i]=0是素数,vis[n-i]=0也为素数,则count++; */ #include <stdio.h> #include <string.h> #include <math.h> const int MN=33000; int main(int argc, char *argv[]) { int vis[MN]; int i,j,n; memset(vis,0,sizeof(vis)); int cas=0; //快速素数打表记住 for (i=2;i<MN;i++) {// 下标为0是素数 if(!vis[i]) for (j=i*i;j<MN;j+=i) { vis[j]=1; } } while(scanf("%d",&n) && n) { int count=0; for (i=2;i<=n/2;i++) { if(!vis[i]) { if(!vis[n-i]) count++; } } printf("%d\n",count); } return 0; }