题目链接:http://vjudge.net/problem/HDU-1397
先打表素数,然后对于N一个个检验..
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <iostream> 5 #include <algorithm> 6 #include <string> 7 #include <cstdlib> 8 9 using namespace std; 10 11 int is[1000000]; 12 13 int main() 14 { 15 int n,i,j; 16 memset(is,1,sizeof(is)); 17 for(i=2; i<=500000; i++) 18 if(is[i]) 19 for(j=i+i; j<1000000; j+=i) 20 is[j] = 0; 21 22 while(~scanf("%d",&n)&&n) 23 { 24 int cnt=0; 25 for(i=2; i<=n/2; i++) 26 if(is[i]&&is[n-i]) 27 cnt++; 28 printf("%d ",cnt); 29 } 30 return 0; 31 }