Hdu2098 分拆素数和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2098
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
1 #include <iostream> 2 #include <algorithm> 3 #include <string> 4 #include <cstring> 5 #include <cstdio> 6 using namespace std; 7 int n; 8 string s; 9 int len,sum; 10 int isprime(int x) 11 { 12 if(x==0||x==1) return 0; 13 int flag=1; 14 for(int i=2;i*i<=x;i++){ 15 if(x%i==0){ 16 flag=0; 17 break; 18 } 19 } 20 return flag; 21 } 22 int main() 23 { 24 while(cin>>n&&n){ 25 sum=0; 26 for(int i=1;i<n/2;i++){ 27 if(isprime(i)&&isprime(n-i)){ 28 //cout<<i<<" "<<n-i<<endl; 29 sum++; 30 } 31 } 32 cout<<sum<<endl; 33 } 34 return 0; 35 }