1 import java.util.Scanner; 2 3 /** 4 * 问题描述:任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况, 5 * 本题目要求输出组成指定偶数的两个素数差值最小的素数对,其中 5 < n <= 10000 6 * eg:输入20,输出7 13 7 */ 8 public class PrimePair { 9 10 public static void main(String[] args) {11 Scanner cin = new Scanner(System.in) ; 12 int n = cin.nextInt() ;13 cin.close();14 //简单判断输入的范围15 if(n%2 == 1 || n <= 5 || n > 10000){16 System.exit(-1);; ;17 } 18 findPrimePair(n) ; 19 20 }21 22 /**23 * 找出满足条件的素数对24 * @param n25 */26 private static void findPrimePair(int n) {27 for(int i = n/2-1 ; i > 0 ; i -= 2){28 if(judgePrime(i) && judgePrime(n-i)){29 System.out.println(i) ;30 System.out.println(n-i) ;31 return ;32 }33 } 34 }35 36 /**37 * 判断一个整数是否是素数38 * @param x39 * @return true---素数 false---不是40 */41 private static boolean judgePrime(int x) {42 double end = x/2 ;43 if (x == 1) {44 return true;45 } else {46 for (int i = 2; i <= end; i++) {47 if (x % i == 0) {48 return false;49 }50 end = x / (i + 1.0);51 }52 return true;53 }54 }55 }