证明不小于6的偶数都是两个素数之和

简介:

所谓哥德巴赫猜想,是指哥德巴赫在教学中发现,每个不小于6的偶数都是两个素数之和。大家都相信这个猜想是正确的,但不能证明。

            对于哥德巴赫猜想的验证,算法很简单,其基本思路是:设n为大于等于6的一个偶数,可将其分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,则在该数得到验证。若n1不是素数,就不必再检查n2是否素数。先从n1=2开始,检验n1和n2(n2=n-n1)是否素数。然后使n1+2再检验n1、n2是否素数……,直到n1=n/2为止。

 

复制代码
int PrimeNum(int i) //判断数i是否为质数 
{
    int j,flag=1;
    for(j=2;j*j<=i-1;j++) //循环除以每个数 
    {
        if(i%j==0) //i能被j整除,表示不是质数 
        {
            flag=0;
            break; 
        }
    }
    return flag; //返回结果 
}
int main()
{
    int n,i,j,flag;for(i=6;i<=n;i+=2) //从6开始,循环验证各偶数 
    {
        flag=1;
        for(j=2;j<=i/2;j++) //判断组成每个数的两个加数 
        {
        //如果有一个加数是偶数则不判断 
          if(j%2==0 || ((i-j)%2==0)) continue;//若一个加数是偶数,不进行素数判断 
          if(PrimeNum(j) && PrimeNum(i-j)) //若两个加数都是素数 
          {
              printf("%d=%d+%d\n",i,j,i-j);//输出素数 
              flag=0; //清除标志 
              break; 
          }
        }
        if(1==flag)//若某个偶数不是由两个奇数组成 
            printf("找到一个不符合要求的偶数:%d\n",j); 
    }
    getch();
    return 0;
}
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4492110.html,如需转载请自行联系原作者

相关文章
|
5月前
|
Python
如何判断一个数是质数? 要求:编写一个Python函数,输入一个整数,输出该整数是否为质数。质数是指大于1的自然数中,除了1和它本身以外不再有其他因数的数。
如何判断一个数是质数? 要求:编写一个Python函数,输入一个整数,输出该整数是否为质数。质数是指大于1的自然数中,除了1和它本身以外不再有其他因数的数。
243 1
|
5月前
40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和
40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和
42 5
|
4月前
数组\判断是否能被已知且小于x的素数整除
数组\判断是否能被已知且小于x的素数整除
18 0
|
5月前
|
存储
1013 数素数
1013 数素数
34 0
1013 数素数
|
5月前
|
机器学习/深度学习 存储 算法
数据结构与算法面试题:给定非负整数 m 和 n,计算不大于 m 的数字中,素数的个数。(提示:算法原理为埃氏筛、线性筛)
数据结构与算法面试题:给定非负整数 m 和 n,计算不大于 m 的数字中,素数的个数。(提示:算法原理为埃氏筛、线性筛)
74 0
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
83 0
【算法练习】两个偶数
1.题目描述 小洛找了2个偶数x,y,想请你找一个数n,使得n % x = y % n
【算法练习】两个偶数
|
C语言 UED
[解题报告]【第36题】给定一个数,判断这个数是不是素数
[解题报告]【第36题】给定一个数,判断这个数是不是素数
[解题报告]【第36题】给定一个数,判断这个数是不是素数
通过函数判断一个自然数是否为素数
通过函数判断一个自然数是否为素数
127 0
通过函数判断一个自然数是否为素数
|
算法
经典算法详解(3)将大于2的偶数分解成两个素数之和
1 #include 2 3 using namespace std; 4 5 bool isPrime(int n) { 6 for (int i = 2; i < n; i++) { 7 if (n%i == 0) { //能被2到把自身小1的数...
1335 0