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

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

解题:

  1. 两个质数肯定是小于输入的偶数even
  2. 利用循环找出所有小于even的质数a,
  3. 求出另一个数b=even-a;判断b是否是质数.
  4. 输出

代码:


public class Day6_Practice {

    public static void main(String[] args) {
    /*
    自己定义的类,因为方法goldBach和ifPrime
    不是static修饰的,需要用对象引用调用方法
    */
        Day6_Practice day6Practice=new Day6_Practice();
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入一个大于6的偶数:");
        int n=scanner.nextInt();
        day6Practice.goldBach(n);
    }
   
    void goldBach(int n){
    //首先判断传入的数n是否是大于6的偶数
        if (n%2==0&&n>6) {
        //循环次数控制在n/2内
            for (int i = 2; i <= n/2; i++) {
            //如果质数1和质数2同时成立,则找到猜想成立的质数
                if (ifPrime(i)&&ifPrime(n-i)) {
                    System.out.println("数为: " +i + " 和" + (n-i) );
                }
            }
        }
        else System.out.println("输入错误!");
    }
    
    //判断数是否是质数
     boolean ifPrime(int num){
      //从2到偶数even的前一位,只要没有因数,就是质数
        for (int i = 2; i <num; i++) {
            if (num%i==0) return false;
        }
        //质数返回真
        return true;
    }
}

你可能感兴趣的:(哥德巴赫猜想:任何一个大于6的偶数,都能被分解成两个质数的和,要求输入一个整数,输出这个数能被分解成哪两个质数的和)