zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java编程序哥德巴赫猜想

2023-09-14 09:14:08 时间

著名的哥德巴赫猜想是:每个不小于 6 的偶数都可以表示为两个奇素数之和。

例如16=3+13=5+11。下面需要你来编程验证一下哥德巴赫猜想是否正确。

Input
在输入一个偶数N(6<=N<=2000000000)。
Output
你需要输出两个奇素数,它们的和等于输入中的那个偶数,如果有多种选择,输出乘积 最大的。
例如 N == 16时,输出5 11,而不是3 13。
Sample Input
6
16
20
Sample Output
3 3
5 11
7 13
public class Test19 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        for (int k = 0; k < 3; k++) {
            System.out.print("请输入一个偶数N(6<N<2000000000):");
            int N = input.nextInt();
            int j, i, sum;
            int temp = 0;
            int maxI = 0;
            int maxJ = 0;
            Test19 test19 = new Test19();
            for (i = 3; i <= N / 2; i += 2) {
                if (test19.isPrime(i) == true) {
                    j = N - i;
                    if (test19.isPrime(j) == true) {
                        sum = i * j;
                    } else {
                        break;
                    }
                } else {
                    break;
                }
                if (temp <= sum) {
                    temp = sum;
                    maxI = i;
                    maxJ = j;
                }
            }
            System.out.println(maxI + " " + maxJ);
            System.out.println("最大乘积数:" + temp);
        }
    }

    public boolean isPrime(int a) {
        boolean flag = true;
        for (int i = 2; i < a / 2; i++) {
            if (a % i == 0) {
                flag = false;
            } else {
                flag = true;
            }
        }
        return flag;
    }
}