对oj很无语,大神帮看吧
Description
歌德巴赫猜想,是指对于每一个大于4的偶数n,都能表示成两个质数之和。
现在,你需要写程序验证这一猜想。对于n,找出质数a和b, 满足a+b=n, a≤b,且a*b最大。例如n=8,满足条件的a和b分别为3和5;
又如n=10,质数3、7以及5、5满足a+b=n, a≤b,而乘积大的那组是5、5。
Input
每行一个偶数n(4 < n <= 20000)
Output
对应于每个输入的偶数,输出a、一个空格、b、一个换行符
Sample Input
8
10
1000
Sample Output
3 5
5 5
491 509
#include "stdio.h"
#include<math.h>
int prime(int X)
{ int i;
int flag=0;
for(i=2;i<=sqrt(X);i++)
{
if(X%i==0)
{flag=1;break;}
}
return flag;
}
int main()
{
int a,b;
int n,i;
while(scanf("%d",&n)!=EOF)
{
if(prime(n/2)==0&&prime(n-n/2)==0)
{
a=n-n/2;
b=n/2;
}
else
{
for(i=n/2;i<=n;i++)
{
if(prime(i)==0&&prime(n-i)==0)
{b=i;
a=n-i;
break;}
}
}
printf("%d %d\n",a,b);
}
return 0;
}
真心交到oj上不对呀。ecnu online judge。
[解决办法]
没有错呀,除了这句语句 b=i; a=n-i;改成 a=i;b=n-i; 要保证a比b 大。
[解决办法]
217376 xmuliang 2877 Yes 248K 99MS G++ 0.47K 2012-05-21 21:57:39
楼主,结果是对的好吧,ac了!