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



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(int num){

              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(int num1) {

              return true;

       }

       public static voidmain(String[] args) {

              for(int i = 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.。。。。。。有兴趣的可以自己试试,欢迎指出错误。

你可能感兴趣的:(Java,问题)