HDU 2098 分拆素数和
分拆素数和
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 15712 Accepted Submission(s): 6789
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
类似于NEFU 2,不过要注意这里是要拆成两个不同的素数
[C++]
1 #include<iostream> 2 #include<cstring> 3 4 using namespace std; 5 6 bool isPrime[10001]; 7 8 void initial() 9 { 10 memset(isPrime,true,sizeof(isPrime)); 11 isPrime[0]=isPrime[1]=false; 12 for(int i=4;i<=10000;i+=2) 13 isPrime[i]=false; 14 for(int i=3;i<=100;i+=2) 15 if(isPrime[i]) 16 for(int j=i*2;j<=10000;j+=i) 17 isPrime[j]=false; 18 } 19 20 int main() 21 { 22 int n; 23 24 initial(); 25 26 while((cin>>n)&&n) 27 { 28 int ans=0; 29 for(int i=2,x=n/2+n%2;i<x;i++) 30 if(isPrime[i]&&isPrime[n-i]) 31 ans++; 32 cout<<ans<<endl; 33 } 34 35 return 0; 36 }


浙公网安备 33010602011771号