##每个大于4的偶数都可以写成两个奇素数的和。例如:8 = 3 + 5,3和5都是奇素数;而20 = 3 + 17 = 7 + 13; 42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23。
对每个测试用例,输出形式为n = a + b,其中a和b都是奇素数,数字和操作符要用一个空格分开,如样例输出所示。如果有多于一对的奇素数的和为n,就选择b - a最大的一对。如果没有这样的数对,则输出“Goldbach’s conjecture is wrong.”。
#include<stdio.h>
#include<math.h>
int a[1000001];
int main()
{
int ret=1,j,x,i;
for(i=2;i<=sqrt(1000001);i++)
{
if(a[i]==0)
{
for(j=i*i;j<1000001;j+=i)
{
a[j]=1;
}
}
}
while(~scanf("%d",&x) && x)
{
for(i=3;i<=x;i+=2)
{
if(a[i]==0 && a[x-i]==0)
{
printf("%d = %d + %d\n",x,i,x-i);
ret=0;
break;
}
}
if(ret==1)
{
printf("Goldbach's conjecture is wrong.");
}
}
return 0;
}