题意:给定一个偶数n,求将其分解成两个素数的种数。
思路:水水。。。
题目链接:http://poj.org/problem?id=2909
View Code
1 #include <cstdio> 2 #include <cmath> 3 #include <cstdlib> 4 #include <cstring> 5 #include <string> 6 #include <algorithm> 7 #include <iostream> 8 using namespace std; 9 const int N=40000; 10 11 bool isprime[N]; 12 int prime[N]; 13 int n; 14 15 int main(){ 16 17 // freopen("data.in","r",stdin); 18 // freopen("data.out","w",stdout); 19 20 int cnt=0; 21 isprime[1]=true; 22 for(int i=2;i<N;i++){ 23 if(!isprime[i]){ 24 prime[++cnt]=i; 25 for(int j=2;i*j<N;j++) 26 isprime[i*j]=true; 27 } 28 } 29 while(scanf("%d",&n),n){ 30 int sum=0; 31 for(int i=1;prime[i]<=n/2;i++) 32 if(!isprime[n-prime[i]]) sum++; 33 printf("%d\n",sum); 34 } 35 return 0; 36 }