哥德巴赫猜想

题目

在这里插入图片描述

思路

  • 需要创建三个方法:判断素数的方法、判断偶数符合哥德巴赫猜想的方法、判断一定范围内的数是否符合猜想的方法
  • 判断素数的方法是:创建循环来判断是否2~i-1之间有其因子(能被2整除),有则不是素数返回false,反之则返回true
  • 判断是否符合哥德巴赫猜想的方法:创建循环遍历,只要两个数之和为该偶数,且两数均为素数,则满足条件,符合哥德巴赫猜想

Code

//完整代码

package day1;
public class Main {
    public static boolean isPrime(int i) {
        // 判断参数i是否是素数,是则返回true反之则返回false
        int n;
        boolean flag = true;
        if (1 == i)                        // 1本身不是素数,因此需把这个特殊的数字抛出
            flag = false;
        for (n = 2; n <= i - 1; n++) {       /* 判断i是否是素数的一个方法是看2~i-1之间有其因子(能被2整除),有则不是素数返回false,反之则返回true*/
            if (i % n == 0) {
                flag = false;
                break;
            }
        }
        return flag;
    }

    public static boolean isGoldbach(int a) {    // 判断参数a是否符合哥德巴赫猜想
        int i;
        boolean flag = false;
        for (i = 1; i <= a / 2; i++) {
            if (isPrime(i) && isPrime(a - i)) {    // 根据试题分析中的表达式,传入相关的两个参数
                flag = true;
                //System.out.print(a + "=" + i + "+" + (a - i) + "  ");
                System.out.printf("%3d=%3d+%3d  ", a, i, (a - i));
                break;
                // 只要有一个符合条件的就可以退出循环,判断下一个偶数
            }
        }
        return flag;
    }

    public static boolean Testify_Guess(int low, int high) {
        // 判断1~10000范围内的所有偶数是否符合哥德巴赫猜想,符合则返回true,反之则返回false
        int i, j = 0;
        boolean flag = true;
        for (i = low; i <= high; i++)
            if (i % 2 == 0 && i > 2)        // 在1~10000之间选取大于2的偶数进行猜想测试
                if (isGoldbach(i)) {
                    j++;                   // j用来控制输出格式 ,每行输出5个数据
                    if (j == 10) {
                        System.out.println();
                        j = 0;
                    }
                } else {
                    flag = false;
                    break;
                }
        return flag;
    }

    public static void main(String[] args) {
        System.out.println("\n在1~10000范围内,现在开始证实哥德巴赫猜想:");
        if (Testify_Guess(1,10000)) {
            System.out.println("\n在 1~10000范围内,哥德巴赫猜想是正确的。");
        } else {
            System.out.println("\n哥德巴赫猜想是错误的");
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值