分拆素数和 HDU

来源:互联网 发布:indesign cs4 mac 编辑:程序博客网 时间:2024/05/21 09:54

分拆素数和 HDU - 2098


Problem

把一个偶数拆成两个不同素数的和,有几种拆法呢?

Input

输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。

Output

对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。

Sample Input

30
26
0

Sample Output

3
2

ps:利用加和的思路,暴力

代码如下:

#include<cstdio>#include<algorithm>#include<math.h>using namespace std;long long isPrime(long long n){    long long x = sqrt(n);    for(long long i = 2; i <= x; i++)        if(n % i == 0) return 0;    return 1;}int main() {    long long x;    int i;    while(scanf("%lld", &x) && x) {        int sum = 0;        for(i = 2; i < x/2; i++)        {            if(isPrime(i) && isPrime(x-i))                sum++;        }        printf("%d\n",sum);    }    return 0;}