题解
输入一个大于2的整数n,从n/2的位置开始向左找,找到第一个满足:x是素数 且 n-x也是素数的x。那么x和n-x就是本题所求的答案。
例如:n = 20。那么向左找到第一个素数 x=7 使得 n-x = 20 - 7 = 13 也是素数。
2 ... 7 ... 10(n/2) ... 13 ... 20
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int n = sc.nextInt();
// 从 n/2 开始向左进行查找,找到第一个素数x且n-x的数为素数的数,即为答案
for (int i = n >> 1; i >= 2; i--) {
if (judgePrime(i) && judgePrime(n - i)) {
System.out.println(i);
System.out.println(n - i);
break;
}
}
}
}
// 判断是否是素数
public static boolean judgePrime(int num) {
int prime = 2; // 从2开始计算素数
while (prime < num) {
if (num % prime++ == 0) {
return false; // 能被num以下的值整除,说明不是素数
}
}
return true;
}
}