hdu 2098

注解:因为数据小于10000,可以直接暴力打表求10000以内的素数。注意是不用的素数和,比如4 = 2 + 2就不行,刚开始被这个卡了一会儿,代码如下:
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<cmath>

using namespace std;

int fun(int i)
{
    
    if (i < 2)
        return 0;
        bool t = true;
        for (int j = 2; j <= sqrt(i); ++j)
        {
            if (i % j == 0)
            {
                t = false;
                break;
            }
        }
        return t;
    
}

int main()
{
    int a[10000];
    int m = 1;
    int num;

    memset(a, 0, sizeof(a));
    for (int i = 2; i <= 10000; i++)
    {
        bool t = true;
        for (int j = 2; j <= sqrt(i); ++j)
        {
            if (i % j == 0)
            {
                t = false;
                break;
            }
        }
        if (t == true)
            a[m++] = i;
    }

    while (cin >> num && num != 0)
    {
        int ans1, ans2;
        int n = 1;
        int ans = 0;
        ans1 = 2;
        while (ans1 < num/2)
        {
            ans2 = num - ans1;
            if (fun(ans2))
                ans++;
            ans1 = a[++n];
        }
        cout << ans << endl;
    }
    

    return 0;
}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页