HDU 2098 分拆素数和

来源:互联网 发布:ac68u 端口转发 编辑:程序博客网 时间:2024/06/04 01:02

题目地址:点击打开链接

思路:水题,注意看清是把一个偶数拆成两个不同素数的和就行了

AC代码:

#include <iostream>using namespace std;int main(){    int i,j,n,a[10000],sum;    a[1] = 0;    a[2] = 1;    for(i=4; i<10000; i+=2)        a[i] = 0;    for(i=3; i<10000; i+=2)    {        for(j=2; j*j<=i; j++)//注意是小于等于        {            if(i % j == 0)            {                a[i] = 0;                break;            }        }        if(j*j > i)            a[i] = 1;    }    while(cin>>n && n)    {        sum = 0;        for(j=2; j<n/2; j++)//除以2不然会记2次,而且是小于,要是小于等于第二个数据就会出错,因为题目要求的是把一个偶数拆成两个不同素数的和        {            if(a[j] && a[n-j])                sum++;        }        cout<<sum<<endl;    }    return 0;}

0 0
原创粉丝点击