题解 | #查找组成一个偶数最接近的两个素数#

查找组成一个偶数最接近的两个素数

http://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9

题解

输入一个大于2的整数n,从n/2的位置开始向左找,找到第一个满足:x是素数 且 n-x也是素数的x。那么x和n-x就是本题所求的答案。

例如:n = 20。那么向左找到第一个素数 x=7 使得 n-x = 20 - 7 = 13 也是素数。

2 ... 7 ... 10(n/2) ... 13 ... 20

代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int n = sc.nextInt();
            // 从 n/2 开始向左进行查找,找到第一个素数x且n-x的数为素数的数,即为答案
            for (int i = n >> 1; i >= 2; i--) {
                if (judgePrime(i) && judgePrime(n - i)) {
                    System.out.println(i);
                    System.out.println(n - i);
                    break;
                }
            }
        }
    }

    // 判断是否是素数
    public static boolean judgePrime(int num) {
        int prime = 2; // 从2开始计算素数
        while (prime < num) {
            if (num % prime++ == 0) {
                return false; // 能被num以下的值整除,说明不是素数
            }
        }
        return true;
    }
}
全部评论

相关推荐

5 3 评论
分享
牛客网
牛客企业服务