【题意】
哥德巴赫猜想:大于四的偶数可以分解为两个奇素数之和
对于给出的数n,如果有多对奇数素数加起来为n,则选择差值b-a最大化的。 若没有这样的一对,则打印"Goldbach's conjecture is wrong."
【思路】
枚举:直接枚举所有的,看是否符合条件,从小到大枚举到中间的话符合条件的也就是差值最大的
#include<stdio.h>
#include<string.h>
#define MAX 1000001
int prime[MAX]={0};
void sushu()
{
memset(prime,0,sizeof(prime));
prime[0]=prime[1]=1;
int i,j;
for(i=2;i<MAX;i++)
if(prime[i]==0)
for(j=2;i*j<MAX;j++)
prime[j*i]=1;
}
int main()
{
int n,i;
sushu();
while(scanf("%d",&n)==1,n)
{
for(i=3;i<=n/2;i+=2)
if(prime[i]==0&&prime[n-i]==0)
{
printf("%d = %d + %d\n",n,i,n-i);
break;
}
if(i>n/2)
printf("Goldbach's conjecture is wrong.\n");
}
return 0;
}