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

哥德巴赫猜想是数论中的一个未解决问题,它指出:任一大于2的偶数都可以表示成两个素数之和。要验证大于6且小于等于20的偶数是否符合哥德巴赫猜想,我们需要对每个符合条件的偶数找出两个素数,使得它们的和等于该偶数。 我们可以通过编程来实现这个验证。以下是使用Java语言实现的一个简单的示例代码: ```java public class GoldbachConjecture { public static void main(String[] args) { // 验证大于6且小于等于20的偶数 for (int i = 8; i <= 20; i += 2) { if (!verifyGoldbach(i)) { System.out.println("哥德巴赫猜想在" + i + "上不成立"); break; } } } public static boolean verifyGoldbach(int number) { for (int i = 2; i <= number / 2; i++) { if (isPrime(i) && isPrime(number - i)) { System.out.println(number + " = " + i + " + " + (number - i)); return true; } } return false; } // 判断一个数是否为素数 public static boolean isPrime(int num) { if (num <= 1) return false; for (int i = 2; i <= Math.sqrt(num); i++) { if (num % i == 0) return false; } return true; } } ``` 上述代码定义了一个主方法来遍历大于6且小于等于20的偶数,对于每个偶数,调用`verifyGoldbach`方法来验证是否存在两个素数使得它们的和等于该偶数。`isPrime`方法用于判断一个数是否为素数。 运行这个程序,我们可以得到如下输出: ``` 8 = 3 + 5 10 = 3 + 7 12 = 5 + 7 14 = 3 + 11 16 = 3 + 13 18 = 5 + 13 20 = 3 + 17 ``` 这表明大于6且小于等于20的偶数符合哥德巴赫猜想
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值