文章目录
- 一、要求
- 二、分析
- 1.已有数据
- 2.需要满足的条件
- 3.定义一个方法,判断该数是否为质数
- 4.在循环体里面,根据条件得出我们想要的结果
- 5.运行结果
- 三、总结
一、要求
验证哥德巴赫猜想:任何一个大于6的偶数,都能分解成两个质数的和。
要求输入一个整数,输出这个数能被分解成哪两个质数的和
二、分析
1.已有数据
从键盘录入一个大于6的偶数,这是一个具体的数值
复制代码
1
2
3
4Scanner input = new Scanner(System.in); System.out.print("请输入一个大于6的偶数:"); int number = input.nextInt();
2.需要满足的条件
两个质数的和=number,两个质数都为未知数,可以用循环穷举。最小的质数为2,所以从2开始,并且这个数是不能大于number - 2 的(大于该值 ,另一个数将会小于2,不满足成为质数的条件)
复制代码
1
2for (int i = 2; i <= number - 2; i++)
3.定义一个方法,判断该数是否为质数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24/** * 判断一个数是否为质数 * * @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.在循环体里面,根据条件得出我们想要的结果
复制代码
1
2
3
4
5
6
7for (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--验证哥德巴赫猜想一、要求二、分析三、总结内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复