编程验证哥德巴赫猜想

1 源码:

public class Test {

    

    public static void main(String[] args) {

        // 验证任何大于2的偶数都可以表示为两个素数之和

        System.out.println("请输入一个大于2的偶数:");

        Scanner scanner = new Scanner(System.in);

        int num = scanner.nextInt();

        while (num <= 2 || num % 2 == 1) {

            System.out.println("输入错误请重新输入:");

            scanner = new Scanner(System.in);

            num = scanner.nextInt();

        }


        for (int i = 2; i <= num - i; i++) {

            if (isPrimeNum(i) && isPrimeNum(num - i)) {

                System.out.println(num + "=" + i + "+" + (num - i));

            }

        }


        // 验证任何大于5的奇数都可以表示为三个素数之和

        System.out.println("请输入一个大于5的奇数:");

        scanner = new Scanner(System.in);

        num = scanner.nextInt();

        while (num <= 5 || num % 2 == 0) {

            System.out.println("输入错误请重新输入:");

            scanner = new Scanner(System.in);

            num = scanner.nextInt();

        }


        for (int i = 2; i <= num - i; i++) {

            for (int j = 2; j <= num - i - j; j++) {

                // 去重

                if (j >= i) {

                    if (isPrimeNum(i) && isPrimeNum(j) && isPrimeNum(num - i - j)) {

                        System.out.println(num + "=" + i + "+" + j + "+" + (num - i - j));

                    }

                }

            }

        }

    }


    /**

     * 判断一个数是否为素数(质数)

     */

    public static boolean isPrimeNum(int num) {

        for (int i = 2; i <= (int) Math.sqrt(num); i++) {

            if (num % i == 0) {

                return false;

            }

        }

        return true;

    }

}

2 细节问题分析

java判断一个数是否为素数,为什么用Math中的sqrt函数?

答:素数又称质数。指在一个大于1的自然数中,除了1和此整数自身之外,没法被其他自然数整除的数。合数是指自然数中除能被1和本整数整除外,还能被其他的整数整除的数。比1大的整数不是素数就是合数。

如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根。

你可能感兴趣的:(编程验证哥德巴赫猜想)