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;
}
思路:水题,注意看清是把一个偶数拆成两个不同素数的和就行了
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;
}