分拆素数和 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;
}
posted @ 2016-12-30 00:52  WhiteLearner  阅读(128)  评论(0编辑  收藏  举报