我是靠谱客的博主 大胆黑夜,最近开发中收集的这篇文章主要介绍JAVA--验证哥德巴赫猜想一、要求二、分析三、总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、要求
  • 二、分析
    • 1.已有数据
    • 2.需要满足的条件
    • 3.定义一个方法,判断该数是否为质数
    • 4.在循环体里面,根据条件得出我们想要的结果
    • 5.运行结果
  • 三、总结


一、要求

验证哥德巴赫猜想:任何一个大于6的偶数,都能分解成两个质数的和。
要求输入一个整数,输出这个数能被分解成哪两个质数的和


二、分析

1.已有数据

从键盘录入一个大于6的偶数,这是一个具体的数值

		Scanner input = new Scanner(System.in);
        System.out.print("请输入一个大于6的偶数:");
        int number = input.nextInt();

2.需要满足的条件

两个质数的和=number,两个质数都为未知数,可以用循环穷举。最小的质数为2,所以从2开始,并且这个数是不能大于number - 2 的(大于该值 ,另一个数将会小于2,不满足成为质数的条件)

		for (int i = 2; i <= number - 2; i++)

3.定义一个方法,判断该数是否为质数

	/**
     * 判断一个数是否为质数
     *
     * @param num
     * @return true/false
     */
    public static boolean isPrime(int num) {
        if (num <= 1) {
            return false;
        } else if (num == 2) {
            return true;
        } else {
            //质数:除了1和它本身以外不再有其他因数的自然数,所以我们只需计算从2开始到num是否有其他因子
            for (int i = 2; i <= num / 2; i++) {//又因为一个数(num)的因子除掉本身是不会大于num/2的,所以i<=num/2
                if (num % i == 0) {
                    return false;//有其他因数,所以num不是质数
                } else if (i > num / 2) {//只有循环完所有的i,才说明num没有除了1和它本身以外不再有其他因数,所以满足的条件应该为i > num/2
                    return true;
                }
            }
        }
        return true;
    }

4.在循环体里面,根据条件得出我们想要的结果

for (int i = 2; i <= number - 2; i++) {
			//需要得到质数所两个质数方法的返回值都应为true,再加一个判断 i <= (number - i),去掉相同的结果
            if (isPrime(i) == true && isPrime(i) == isPrime(number - i) && i <= (number - i) ) {
                System.out.println("这个数能被分解成以下两个质数:" + i + "-------" + (number - i));
            }
        }

5.运行结果

在这里插入图片描述


三、总结

在这里插入图片描述

最后

以上就是大胆黑夜为你收集整理的JAVA--验证哥德巴赫猜想一、要求二、分析三、总结的全部内容,希望文章能够帮你解决JAVA--验证哥德巴赫猜想一、要求二、分析三、总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部