首先要思考如何判断一个数是否为素数;
然后再把整数分为两个素数
最后两个素数的差值是否最小
package test;
import java.util.Scanner;
/*
* 输入:一个偶数
* 要求拆分成两个素数(两个素数的和等于这个偶数),
* 并且这两个素数的差值最小,
* 输出:打印出这两个素数
* */
public class NumberSplitToPrime {
public static void main(String[] args) {
// Scanner in = new Scanner(System.in);
// int number = in.nextInt();
int number = 20;
int n1= 0; //用来保存两个素数
int n2 = 0;
int min = Integer.MAX_VALUE;
for(int i = number; i > 0; i--){
// 把一个整数拆分成两个数
int num1 = i;
int num2 = number - i;
// 判断是否这两个数是否是偶数
if(isPrime(num1) && isPrime(num2)){
//通过Math.abs函数求出两个数的绝对值
if(Math.abs(num1-num2) < min){
// 结果小于最小min值,则赋值给min
min = Math.abs(num1-num2);
n1 = num1; //并保存两个数下来
n2 = num2;
}
}
}
System.out.println(n1+"\n"+n2);
}
//判断一个数是否是质数
public static boolean isPrime(int n){
for(int i=2; i < n; i++){
if(n%i == 0){return false;}
}
return true;
}
}