哥德巴赫猜想

      哥德巴赫猜想Goldbach Conjecture)大致可以分为两个猜想(前者称“强”或“二重哥德巴赫猜想”后者称“弱”或“三重 哥德巴赫猜想”):1、 每个不小于6的偶数都可以表示为两个奇素数之和;2、每个不小于9的奇数都可以表示为三个 奇质数之和。
  
每个不小于6的偶数都可以表示为两个素数之和



编写一个函数,输出6-100000内所有偶数可以表示为哪两个素数之和,如果一个偶数有多种表示方式,输出任意一种即可。
#include<stdio.h>

#include<math.h>

const int Max=100010;

int a[Max];

void isprime()

{

    for(int i=1;i<Max;i++)

        a[i]=i;

    a[1]=0;

    for(int i=2;i<=sqrt(Max+0.5);i++)

    {

        if(a[i])

        {

            for(int j=2;i*j<Max;j++)

            {

                a[i*j]=0;

            }

        }

    }

}

int main()

{

    isprime();

    int i,n;

    while(scanf("%d",&n)!=EOF)

    {

        i=3;

        while(!a[i]||!a[n-i])

        {

            i+=2;

        }

        printf("%d %d\n",a[i],a[n-i]);

    }

    return 0;

}
View Code

 

你可能感兴趣的:(哥德巴赫猜想)