题解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; } }
自定义排序可以说是炉火纯青