概述
文章目录
- 一、要求
- 二、分析
- 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--验证哥德巴赫猜想一、要求二、分析三、总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复