HDU 2098 分拆素数和

  呃呃呃。很水的一道题,没什么说的,打表,然后筛出来符合条件的解就可以了,多多借助变量之间特殊的关系进行表示会达到简化的目的。


# include<cstdio>
# include<iostream>
# include<cstring>


using namespace std;

# define MAX 10000

int hash[MAX+10];

void dabiao()
{
    memset(hash,0,sizeof(hash));
    hash[0] = 1;
    hash[1] = 1;
    for ( int i = 2;i < MAX;i++ )
        {
            //if (i > MAX/i ) continue;//如果数据大的话,就要这样处理,防止爆int
            if ( !hash[i] )
                {
                    for ( int j = i*i;j < MAX;j+=i )
                        {
                            hash[j] = 1;
                        }
                }
        }
}


int main(void)
{
    dabiao();
    int n;

    while ( (cin>>n)&&n )
    {
        int ans = 0;
       for ( int i = 2;i < n/2;i++ )
            {
                if ( hash[i]==0 && hash[n-i]==0 )ans++;
            }

            cout<<ans<<endl;
            //dabiao();
    }


    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值