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

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

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

大家不要看,下面是很暴力的解法,一点不理智

别人的解法看到有:从n的中位数出发,判断是否自身与另一位数字是否素数,牛皮!

import java.util.*;

// 兄弟们 这是没看过别人解法的解法,思路是找到n以内的所有素数,用n减去其中一个 查看另外一个是否在素数列表内
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        HashMap<Integer, Integer> set = new HashMap<>();
        set.put(new Integer(1), new Integer(1));
        set.put(new Integer(2), new Integer(2));
        set.put(new Integer(3), new Integer(3));
        //找出素数
        for(int i=4;i<=a;i++) {
            for(int j=2;j<i;j++) {
                if(i%j == 0) {
                    break;
                }
                if(j==i-1) {
                    set.put(i, i);
                }
            }
        }
        Iterator<Integer> iterator = set.keySet().iterator();
        int min = a;
        int num1 = 0;
        int num2 = 0;
        while (iterator.hasNext()) {
            Integer key = iterator.next();
            Integer v = set.get(a - key);
            if (v != null) {
                int temp = key > v ? key - v : v - key ;
                if (min > temp) {
                    num1 = key > v ? v : key;
                    num2 = a - num1;
                    min = temp;
                }
            }
        }
        System.out.println(num1);
        System.out.println(num2);
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务