分拆素数和 HDU - 2098
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。Output对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。Sample Input
30 26 0
Sample Output
3 2
一道很水的题,自己做了一下感觉步骤有点麻烦但是上网搜了一下,发现我的居然比网上有些做法简单。。。。拿出来晒一下,大神飘过~~~~
#include<iostream> #include<cstdio> #include<math.h> using namespace std; bool sub(int p); int main() { int T = 0; while (cin >> T) { if (T == 0) break; int count = 0; for (int i = 2; i < T / 2; i++) { int v1 = T - i; if (sub(v1) && sub(i)) { count++; } } cout << count << endl; } return 0; } bool sub(int p) { int i = 2; for (i = 2; i * i <= p; i++) { if (p % i == 0) { break; } } if (i * i > p) return true; else return false; }