X-man

导航

哥德巴赫猜想

     哥德巴赫猜想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

 

posted on 2014-04-06 16:58  雨钝风轻  阅读(931)  评论(0编辑  收藏  举报