543 - Goldbach's Conjecture

#include<stdio.h>
#include<math.h>
#define max 1000001
long long int arr[max];
int sieve()
{
    int i,j,k;
    for(i=2; i<=max; i++)
    {
        arr[i]=1;
    }
    for(i=2; i<=sqrt(max); i++)
    {
        for(j=2; i*j<=max; j++)
        {
            arr[i*j]=0;
        }
    }
}
int main()
{
    long long int a,b,k,n;
    sieve();
    while(scanf("%lld",&n)==1)
    {
        if(n==0)
        {
            break;
        }
        a=0;
        for(k=2; k<n; k+=1)
        {
            b=n-k;
            if(arr[b]!=0 && arr[k]!=0)
            {
                a++;
                break;
            }
        }
        if(a>0)
        {
            printf("%lld = %lld + %lld\n",n,k,b);
        }
        else
        {
            printf("Goldbach's conjecture is wrong.\n");
        }
    }
    return 0;
}

0 comments: (+add yours?)