686 - Goldbach's Conjecture (II)

#include<stdio.h>
#include<math.h>
#define max 1000001
long long int arr[max];
int sieve()
{
    int i,j;
    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/2; k++)
        {
            b=n-k;
            if(arr[b]!=0 && arr[k]!=0)
            {
               a++;
            }
        }
        printf("%lld\n",a);
    }
    return 0;
}


0 comments: (+add yours?)