还是素数筛选法,数组得开大点
#include<stdio.h> #include<math.h> int a[100001]; void init() { int n=32768+1; for(int i=2;i<=n;i++) { if(a[i]==0) for(int j=i+i;j<=n;j+=i) a[j]=1; } } int main() { int i,j,n; init(); while(scanf("%d",&n)==1) { int count=0; for(int i=2;i<=n/2;i++) { if(a[i]==0&&a[n-i]==0) count++; } printf("%d\n",count); } return 0; }