验证哥德巴赫猜想:任意一个大于6的偶数,都能分解成2个质数的和。
代码:
package gold1;
import java.util.*;
public class TestGoldBach{
public static void main(String[] args){
//首先创建一个扫描仪
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个大于6的偶数:");
//写一个do while循环,如果输入错误继续输入
int n; //在循环外先定义一个变量n
do{
n=sc.nextInt();
if( n%2!=0 || n<=6){
System.out.print("输入错误,请重新输入:");
}
}while(n%2!=0 || n<=6);
//确定n正确以后,把n分解成2个数并调用判断质数的函数
for(int i=2;i<=n/2;i++){ //i<=n/2 是为了不让遍历到的i和n-i的两个值发生重复
if( isPrime(i)&&isPrime(n-i) ){
System.out.print(n+"="+i+"+"+(n-i));
}
}
}
//写一个判断质数的函数
public static boolean isPrime(int n){
for(int i=2;i<=n/2;i++){ //判断一个质数要判断,它能不能再除尽某一个数
if(n%i==0) return false; //如果除以大于它二分之一的数必然除不尽的
}
return true; //返回给调用者一个布尔值
}
}
注:①一个质数是除了1和它本身没有别的因子的数。质数不包括1和它本身
②<n/2 的目的是避免重复
转载于:https://blog.51cto.com/wyld123/1903225