hdu 2098 分拆素数和(素数)
分拆素数和
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 38921 Accepted Submission(s): 17015
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30 26 0
Sample Output
3 2
Source
Recommend
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 5 using namespace std; 6 7 bool prime[10005]; 8 9 void primee(){ 10 memset(prime,true,sizeof(prime)); 11 prime[1]=false; 12 for(int i=4;i<10005;i++,i++){ 13 prime[i]=false; 14 } 15 for(int i=3;i*i<10005;i++){ 16 if(prime[i]){ 17 for(int j=i*i;j<10005;j+=2*i){ 18 prime[j]=false; 19 } 20 } 21 } 22 } 23 24 int main() 25 { 26 primee(); 27 int n; 28 while(~scanf("%d",&n)&&n){ 29 int sum=0; 30 for(int i=2;i<=n-2;i++){ 31 if(prime[i]){ 32 if(prime[n-i]){ 33 sum++; 34 } 35 } 36 } 37 printf("%d\n",sum/2); 38 } 39 return 0; 40 }