题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
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); } }