![:(](./images/smilies/icon_frown.gif)
Code: Select all
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<iostream>
long long int a[1000000];
long long int x[1000000];
using namespace std;
int main()
{
long long int n, i, j, k, l, sum, p, max, c, b, check;
while(scanf("%lld",&n)==1 && n!=0)
{
check=0;
if(n==6)
{ printf("6 = 3 + 3\n"); check=1;}
else if(n>6)
{
l=1; max=0;
for(i=1;i<=n;i++)
{
x[i]=i;
}
x[1]=0; l=1;
for(i=2;i<=sqrt(n);i++)
{
if(x[i]!=0)
{
for(k=2*i;k<=n;k=k+i)
if(x[k]!=0)
x[k]=0;
}
}
for(i=1;i<=n;i++)
{
if(x[i]!=0)
a[l++]=x[i];
}
l=l-1;
for(i=1;i<=sqrt(l)+1;i++)
{
for(j=l;j>=sqrt(l)+1;j--)
{
sum = a[i]+a[j];
if(sum==n)
{
k = abs(a[i]-a[j]);
if(k>max)
{
max=k;
b = a[i];
c = a[j];
check=1;
}
}
}
}
printf("%lld = %lld + %lld\n", n, b, c);
}
if(check==0)
printf("Goldbach's conjecture is wrong.\n");
}
return 0;
}