验证哥德巴赫猜想:任意一个大于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 的目的是避免重复