Split prime number and
Time Limit: 1000 ms memory limit: 32768kb 64bit Io format: % i64d & % i64u
Submit
Status
Practice
HDU 2098
Description
Split an even number into two different prime numbers. How can we split them?
Input
The input contains some positive even numbers. The value cannot exceed 10000, And the number cannot exceed 500. In case of 0, the input ends.
Output
Returns the number of different prime numbers corresponding to each even number. Each result occupies one row.
Sample Input
30
26
0
Sample output
3
2
#include <iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<deque>#define MAX 10007using namespace std;int n,ans;bool isprime[10007];void sieve(){ int p=0; for(int i=0;i<MAX;i++) isprime[i]=true; isprime[0]=isprime[1]=false; for(int i=2;i<MAX;i++) { if(isprime[i]){ for(int j=2*i;j<MAX;j+=i) isprime[j]=false; } }}int main(){ while(1){ ans=0; scanf("%d",&n); if(n==0) break; sieve(); for(int i=2;i<n/2;i++) { if(isprime[i]&&isprime[n-i]) ans++; } printf("%d\n",ans); } return 0;}