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

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

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

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int x = Integer.valueOf(in.nextLine());

        //素数对
        List<List<Integer>> list = new ArrayList<>();

        for (int i = 2; i <= (x - 2); i++) {
            if (!check(i) && !check(x - i)) {
                List<Integer> right = new ArrayList<>();
                right.add(i);
                right.add(x - i);

                list.add(right);
            }
        }

        //素数对差值最小
        list = list.stream().sorted(new Comparator<List<Integer>>() {
            @Override
            public int compare(List<Integer> o1, List<Integer> o2) {
                o1 = o1.stream().sorted().collect(Collectors.toList());
                o2 = o2.stream().sorted().collect(Collectors.toList());

                return (o2.get(0) - o2.get(1)) - (o1.get(0) - o1.get(1));
            }
        }).collect(Collectors.toList());

        if (list.size() > 0) {
            List<Integer> targetList = list.get(0);

            System.out.println(targetList.get(0));
            System.out.println(targetList.get(1));
        }
    }

    public static boolean check(int x) {
        boolean flag = false;
        for (int i = 2; i < x; i++) {
            if (x % i == 0) flag = true;
        }

        return flag;
    }
}

自定义排序可以说是炉火纯青

全部评论

相关推荐

AAA专业长城贴瓷砖刘大爷:这样的简历我会直接丢进垃圾桶,花里胡哨的
点赞 评论 收藏
分享
在看数据的傻狍子很忙碌:学生思维好重,而心很急,自己想想真的能直接做有难度的东西吗?任何错误都是需要人担责的,你实习生可以跑路,你的同事领导呢
点赞 评论 收藏
分享
马上要带我人生中的第一个实习生了,想问问大家都喜欢什么的mentor?好让我有个努力的目标
拒绝996的劳伦斯很勇敢:看得见目标且护犊子的 具体就是明确告诉组员要干什么,然后当别的组甩dirty work时能护的组自家新人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务