Java机试题:查找组成一个偶数最接近的两个素数


描述

任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。   本题含有多组样例输入。   数据范围:输入的数据满足 

输入描述:

输入一个大于2的偶数

输出描述:

输出两个素数

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt()){
            //  4 <= num <= 1000,并且是偶数
            int num = sc.nextInt();
            int differ = -1;
            int a = 0;
            int b = 0;
            // 第一个素数不可能超过num/2
            for (int i = 2; i <= num / 2; i++) {
                // 判断两个是否是素数
                if(checkIsPrimeNum(i) && checkIsPrimeNum(num - i)) {
                    // 判断两数差
                    if(differ == -1 || differ > num - i - i) {
                        differ = num - i - i;
                        a = i;
                        b = num - i;
                    }
                }
            }
            System.out.println(a);
            System.out.println(b);
        }
    }
    
    public static boolean checkIsPrimeNum(int a) {
        boolean ret = true;
        if(a == 2) {
            return true;
        } else {
            for (int i = 2; i < a; i++) {
                if(a % i == 0) {
                    ret = false;
            break; } }
return ret; } } }