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

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

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

import java.util.*;

// 老八秘制小汉堡
public class Main {
    public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            int i1 = scanner.nextInt();
            ArrayList<Integer> su = new ArrayList<>();
            for (int i = 0; i <i1; i++) {
                if (isPrime(i)){
                    su.add(i);
                }
            }
            LinkedHashMap<Integer, Integer> suhm= new LinkedHashMap<>();
            for (int i = 0; i <su.size(); i++) {
                for (int j = 0; j <su.size(); j++) {
                    if (su.get(i)+su.get(j)==i1&&suhm.get(su.get(i))==null){
                        suhm.put(su.get(i),su.get(j));
                    }
                }
            }
            LinkedHashMap<String, Integer> hm = new LinkedHashMap<>();
            for(Integer key:suhm.keySet()){
                String s = key + " " + suhm.get(key);
                hm.put(s,Math.abs(key-suhm.get(key)));
            }
            ArrayList<Integer> sort = new ArrayList<>();
            for(String key:hm.keySet()){
                sort.add(hm.get(key));
            }
            Collections.sort(sort);
            for(String key:hm.keySet()){
                if (hm.get(key)==sort.get(0)){
                    String[] split = key.split(" ");
                    System.out.println(Math.min(Integer.valueOf(split[0]),Integer.valueOf(split[1])));
                    System.out.println(Math.max(Integer.valueOf(split[0]),Integer.valueOf(split[1])));
                    break;
                }
            }

        }
    }
    public static boolean isPrime(int n) {
        if (n <= 3) {
            return n > 1;
        }
        //判断一个数能否被小于sqrt(n)的数整除
        int sqrt = (int)Math.sqrt(n);
        for (int i = 2; i <= sqrt; i++) {
            if(n % i == 0) {
                return false;
            }
        }
        return true;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:26
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-25 17:13
点赞 评论 收藏
分享
07-09 20:50
门头沟学院 Java
码农索隆:1.教育背景和荣誉证书合二为一。 2.获奖项目理一遍,你做了什么,对你求职的岗位有什么帮助,没有就删掉。 3.技能特长和教育背景交换位置。 4.技能特长写的太差,上网上找简历参考。都不用问你别的,一个redis就能把你问住,写写你具体会redis哪些方面的知识。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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