10168 - Summation of Four Primes

#include<stdio.h>
#include<math.h>
#define MAX 10009999
bool arr[MAX];
void sieve()
{
    long long int i,j,k;
    k=sqrt(MAX);
    for(i=3; i<=k; i+=2)
    {
        if(arr[i]==0)
        {
            for(j=i*i; j<MAX; j+=i+i)
            {
                arr[j]=1;
            }
        }
    }
    arr[1]=1;
    arr[0]=1;
    for(i=4; i<MAX; i=i+2)
    {
        arr[i]=1;
    }
}
int main()
{
    long long int a,b,c,d,n,i;
    sieve();
    while(scanf("%lld",&n)==1)
    {
        if(n%2==1)
        {
            c=2;
            d=3;
            n=n-(c+d);
        }
        else if(n%2==0)
        {
            c=2;
            d=2;
            n=n-(c+d);
        }
        b=0;
        for(i=2; i<n; i++)
        {
            a=n-i;
            if(!arr[a] && !arr[i])
            {
                b++;
                break;
            }
        }
        if(b>0)
        {
            printf("%lld %lld %lld %lld\n",c,d,a,i);
        }
        else
        {
            printf("Impossible.\n");
        }
    }
    return 0;
}

0 comments: (+add yours?)