您的位置:首页 > 其它

HDU 2098 分拆素数和

2015-08-04 19:02 260 查看
题目地址:点击打开链接

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

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: