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