【华为OJ】【079-查找组成一个偶数最接近的两个素数】

来源:互联网 发布:Js识别 key value 编辑:程序博客网 时间:2024/06/05 04:53

【华为OJ】【算法总篇章】


【华为OJ】【079-查找组成一个偶数最接近的两个素数】

【工程下载】


题目描述

任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对

输入描述

输入一个偶数

输出描述

输出两个素数

输入例子

20

输出例子

713

算法实现

import java.util.Scanner;/** * Author: 王俊超 * Date: 2016-01-03 20:44 * 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;    }}
1 0