用 Java 验证8-10000内的所有偶数符合哥德巴赫猜想

来源:互联网 发布:设计数据库的软件 编辑:程序博客网 时间:2024/06/14 08:04


Java 验证8-10000内的所有偶数符合哥德巴赫猜想

首先让我们先来了解一下什么是哥德巴赫猜想:

在1742年6月7日给欧拉的信中,哥德巴赫提出了以下猜想:a) 任一不小于6之偶数,都可以表示成两个奇质数之和;b) 任一不小于9之奇数,都可以表示成三个奇质数之和。欧拉在回信中也提出另一等价版本,即任一大于2的偶数都可写成两个质数之和。现在通常把这两个命题统称为哥德巴赫猜想。把命题"任何一个大偶数都可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b",哥氏猜想就是要证明"1+1"成立。1966年陈景润证明了"1+2"成立,即"任何一个大偶数都可表示成一个素数与另一个素因子不超过2个的之和"。(摘自搜狗 百科)

这里我们简化一下,只是证明8-10000以内的所有偶数都可以拆分为两个素数的和。先明确一下素数的概念。

素数:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。

思路: 1,利用循环获得8-10000中的所有偶数。

    2,对每个符合条件的偶数进行判断,如果存在任意一组素数相加满足条件,则这个偶数符合猜想。
    3,得到结果。

package com.xidedu.test;

 

public class Test {

       //将一个偶数拆分为两个奇数,并判断两个奇数是否符合要求

       public static voidchaijishu(intnum){

              int num1 = 0;

              int num2 = 0;

              for(num1 = 3;num1<num/2;num1=num1+2){

                     num2 = num - num1;

                     if(isprime(num1) &&isprime(num2)){

                            System.out.println("偶数:"+num+"可以拆分为两个素数和"+num1+"+"+num2+"="+num);

                            break;

                     }else{

                            System.out.println("这个偶数不符合猜想。");

                     }

              }

       }

       //验证是否是素数

       private static boolean isprime(intnum1) {

              returntrue;

       }

       public static voidmain(String[] args) {

              for(inti = 8;i < 10000;i=i+2){

                     chaijishu(i);     //用一个方法来判断

              }

       }

}

在Java中有isprime() 方法,可以很方便的判断一个奇数是否是素数。在chaijishu(); 中num1的初始值从3 开始是为了避免1和2 两个数(我也有点无法解释尴尬


结果

偶数:4666可以拆分为两个素数和3+4663=4666
偶数:4668可以拆分为两个素数和3+4665=4668
偶数:4670可以拆分为两个素数和3+4667=4670
偶数:4672可以拆分为两个素数和3+4669=4672
。。。。。。。
偶数:9994可以拆分为两个素数和3+9991=9994
偶数:9996可以拆分为两个素数和3+9993=9996
偶数:9998可以拆分为两个素数和3+9995=9998

可能是范围比较大,我的控制台只显示了4666开始的数,清一色的3.。。。。。。有兴趣的可以自己试试,欢迎指出错误。

原创粉丝点击