- 题目描述:
把一个偶数拆成两个不同素数的和,有几种拆法呢?值不会超过10000,个数不会超过500,若遇0,则结束。
- 思路:
由于值不超过10000,所以可以用枚举的思想,检验每一个符合条件的素数。
- 细节:
这个题就是哥德巴赫猜想的变形,处理好判断素数的函数是关键。本题要求为不同的素数,所以要去除素数相同的情况。
- 源代码:
#include<iostream> #include<math.h> using namespace std; bool zhishu(int n) { int x=0; for(int i=2;i<=sqrt(n);i++) if(n%i==0) return false; return true; } int main() { int n; while(cin>>n) { if(n==0) break; int x=0; for(int i=2;i<=n/2;i++) { if(zhishu(i)) { int j; j=n-i; if(zhishu(j)) if(j!=i) x++; } } cout<<x<<endl; } }