用到小范围的素数习惯性打表,用到时只要遍历即可,节约时间。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
boolean prime[] = new boolean[20000];
prime[1] = true;
for (int i = 2; i < prime.length; i++) {
if (!prime[i]) {
for (int j = i*2; j < prime.length; j += i) {
prime[j] = true;
}
}
}
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
for (int i = n/2; i >0; i--) {
if (!prime[i] && !prime[n-i]) {
System.out.println(i+" "+(n-i));
break;
}
}
}
}
}