哥德巴赫猜想即任何一个大于 2 的偶数都能表示为两个素数之和。编写一个 Java 程序, 验证 1~200 内哥德巴赫猜想的正确性,近似证明哥德巴赫猜想。

该程序通过编程实现验证哥德巴赫猜想,即检查1到200之间的所有偶数是否能表示为两个素数之和。首先定义了一个判断素数的函数`isPrime`,接着使用`isGoldbach`函数检查每个偶数是否满足猜想,最后`Testify_Guess`函数遍历并测试所有偶数。程序运行结果显示在1~200范围内,所有偶数都符合哥德巴赫猜想。
摘要由CSDN通过智能技术生成

思路:  1,首先确定素数的判断条件,判断i是否是素数的一个方法是看2~i-1之间有其因子(能被2整除),有则不是素数(1本身不是素数)isPrime
             2,一个任意偶数m可以写成:m=1+(m-1);m=2+(m-2);m=3+(m-3);.....m=m/2+m/2...后面和前面又一样了
             3,所以只需要判断从1到m/2中有一个素数,及剩下的数也是素数就说明这个是符合哥德巴赫猜想(用函数) isGoldbach
             4,来设置一个函数,在1~200中取出偶数,来进行上面1,2操作Testify_Guess
             5,这题函数尽量返回值是boolean类型,因为有很多条件判断!

public class Test3 {
	public static void main(String[] args) {
		 System.out.println("\n在1~200范围内,现在开始证实哥德巴赫猜想:");
	        if (Testify_Guess(1, 200)) {
	            System.out.println("\n在 1~200范围内,哥德巴赫猜想是正确的。");
	        } else {
	            System.out.println("\n哥德巴赫猜想是错误的");
	        }
	}
	//函数1(给定一个数判断是否为素数)
	public static boolean isPrime(int i) {
		boolean flag = true;		//先定义一个初始变量true
		if(i == 1) {
			flag = false;			//先判断1,1不是素数
		}
		for(int n = 2;n<= i-1;n++) {
			if(i%n == 0) {
				flag = false;			//然后从2开始,看2到你给的数字i-1之间是否有i的因子,如果有,直接改false,然后退出循环
				break;
			}
		}
		return flag;
	}
	//函数2(判断从1到m/2中是非否有一个素数,以及判断出这个素数后剩下的数范围中是否还有一个素数,这样就可以看成这个数m是两个素数相加了)
	//歌德巴赫猜想
	public static boolean isGoldbach(int m) {
		boolean flag = false;
		for(int i = 1;i<= m/2;i++) {
			if(isPrime(i) && isPrime(m-i)) {
				flag = true;
				System.out.print(m + "=" + i + "+" + (m-i) +" ");	  //不换行,用空格隔开
				break;
			}
		}
		return flag;
	}
	//函数3 验证哥德巴赫,1~200内的所有偶数是不是都是两个素数相加
	public static boolean Testify_Guess(int min,int max) {
		boolean flag = true;
		int j = 0;
		for(int i = min;i<= max;i++) {
			if(i%2 == 0 && i>2) {	//在min和max中选取偶数进行操作,i>2是因为1除2也等于0
				if(isGoldbach(i)) {
					j++;		//	控制行,每10个换一行
					if(j == 10) {
						System.out.println();
						j = 0;
					}
				}else {
					flag = false;
					break;
				}
			}
		}
		return flag;
	}

结果:

 结语:

        进来的小伙伴一定会实现你们的目标的!一起加油!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值