查找組成一個偶數最接近的兩個素數

題目描述

任意一個偶數(大於2)均可以由2個素數組成,組成偶數的2個素數有不少種狀況,本題目要求輸出組成指定偶數的兩個素數差值最小的素數對

輸入描述

輸入一個偶數

輸出描述

輸出兩個素數

輸入例子

20

輸出例子

7
13

算法實現

import java.util.Scanner;

/**
 * Declaration: All Rights Reserved !!!
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            System.out.println(findPrime(n));
        }

        scanner.close();
    }

    private static String findPrime(int n) {

        for (int i = n / 2; i >= 2; i--) {
            if (isPrime(i) && isPrime(n - i)) {
                return i + "\n" + (n - i);
            }
        }

        return null;
    }

    private static boolean isPrime(int n) {
        if (n < 2) {
            return false;
        }

        int sqrt = (int) Math.sqrt(n);

        for (int i = 2; i <= sqrt; i++) {
            if (n % i == 0) {
                return false;
            }
        }

        return true;
    }
}
相關文章
相關標籤/搜索