HDU 2098 分拆素数和

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
 
代码:
#include <bits/stdc++.h>

using namespace std;

const int maxn = 1e5+10;
int a[maxn],b[maxn],c[maxn];
int flag;

int A(int n)
{
    if(n==1)
        return 0;
    for(int i=2; i*i<=n; i++)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        if(n==0)
            break;
        int cnt=0;
        for(int i=1; i<n/2; i++)
        {
            if(A(i)==1&&A(n-i)==1)
            {
                cnt++;
            }
        }
        printf("%d\n",cnt);
    }
    return 0;
}

  

猜你喜欢

转载自www.cnblogs.com/zlrrrr/p/9241996.html