题目描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
输入描述:输入一个偶数
输出描述:输出两个素数
解题思路
从中间n/2向两侧遍历,找到第一组和为n的素数组合就打印即可,一定注意要加break,不然会继续遍历打印其它素数组合
isPrime:判断一个数后是否是素数的标准是看除了1和它本身是否有其它数可以作为它的因数,有的话就不是返回false
import java.util.Scanner;
public class class_day12_02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=n/2;i>=2;i--){//从中间找保证了差最小的两个素数
if(isPrime(i)&&isPrime(n-i)){
System.out.println(i);
System.out.println(n-i);
break;
}
}
}
public static boolean isPrime(int n){
for(int i=2;i<n;i++){
if(n%i==0){ //判断是否为素数
return false;
}
}
return true;
}
}