编程验证哥德巴赫猜想

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大的整数不是素数就是合数。

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

转载于:https://my.oschina.net/90liusq/blog/262759

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值