#牛客创作赏金赛# #刷题我是认真的#
解题思路:
- 两个点:
- 怎么找出小于n的素数
- 如何找出和为n且相差最小的素数
- 如何找出小于素数,可以采用暴力求解法,适合小数据量
- 找出和为n且相差最小的素数: 这两个有一个数肯定大于n/2,通过
isPrime(i) && isPrime(n - i)
即可确定相差最小的两个数
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
list.add(i);
}
}
int num1 = 0;
for (int i = n / 2; i < n; i++) {
if (isPrime(i) && isPrime(n - i)) {
num1 = i;
break;
}
}
System.out.println(n - num1);
System.out.println(num1);
}
public static boolean isPrime(int num) {
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}