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,得到结果。
在Java中有 isprime() 方法,可以很方便的判断一个奇数是否是素数。在chaijishu(); 中num1的初始值从3 开始是为了避免1和2 两个数(我也有点无法解释)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); //用一个方法来判断
}
}
}
结果
偶数: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.。。。。。。有兴趣的可以自己试试,欢迎指出错误。