what will be the condition for N<6 and N%2!=0 ... is it GOlbach's conjecture false will be printed or only continue;

*/
Code: Select all
#include <stdio.h>
#include <math.h>
#define MAX 1000000
long _prime[MAX];
void seive()
{
long limit=MAX, i,j;
_prime[0]=_prime[1]=1;
for(i=4;i<=limit;i+=2) _prime[i]=1;
for(i=3;i<=sqrt(limit);i+=2)
if(_prime[i]==0)
for(j=i*i;j<=limit;j+=i+i)
_prime[j]=1;
}
long prime_facto(long x)
{
long i;
long c,m=0;
c=x;
while((c%2)==0)
{
long x=2;
m++;
// printf("%ld,",x);
c=c/2;
}
i=3;
while(i<=(sqrt(c)+1))
{
if((c%i)==0)
{
// printf("%ld,",i);
c=c/i;
m++;
}
else
i=i+2;
}
if(c>1)
m++;
// printf("%ld,",c);
return m;
}
int main()
{
long len,prime[100000],x,primal,flag,i,j=0,k,N;
long n=1000000;
seive();
k=0;
for(i=0;i<n;i++)
{
if(_prime[i]!=1)
prime[k++]=i;
}
freopen("x.in","r",stdin);
while(scanf("%llu",&N)==1)
{
if(N==0)
break;
if(N<6)
{
flag=0;
goto l2;
}
if((N%2)!=0)
{
flag=0;
goto l2;
}
for(i=k-1;i>=0;)
if(prime[i]>N)
{
i--;
}
else
{
goto l1;
}
l1:
x=N-prime[i];
len=prime_facto(x);
if(x==1 && i>=0)
{
prime[i--];
goto l1;
}
if(len!=1 && i>=0)
{
prime[i--];
goto l1;
}
else
{
flag=1;
primal=prime[i];
}
l2:
if(flag)
printf("%llu = %llu +%llu\n",N,x,primal);
else
printf("Goldbach's conjecture is wrong.\n");
}
return 0;
}