题目描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
输入描述:
输入一个偶数
输出描述:
输出两个素数
示例1
输入
20
输出
7
13
实现代码
- 思路:
①首先输入的肯定是偶数,从中间开始找的话就是保证两个数差距最小
②然后再分别判断两个数是不是质数,注意:判断是否是质数,没必要从2-n判断,而是只需要2-(int)Math.sqrt(n)这个范围判断
package cn.c_shuang.demo57;
import java.util.Scanner;
/**
* 查找组成一个偶数最接近的两个素数
* @author Cshuang
* 首先输入的肯定是偶数,从中间开始找的话就是保证两个数差距最小,然后再分别判断两个数是不是质数,就可以了
*/
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
while(in.hasNext()){
int number=in.nextInt();
int halfNum=number/2;
System.out.println(findPrimeNumber(halfNum,number));
}
in.close();
}
public static boolean isPrimeNumber(int num){
int n=(int)Math.sqrt(num);
for(int i=2;i<=n;i++){
if(num%i==0)
return false;
}
return true;
}
public static String findPrimeNumber(int halfNum,int number){
StringBuilder s=new StringBuilder();
for(int i=halfNum;i>=2;i--){
for(int j=halfNum;j<number;j++){
if(isPrimeNumber(i)&&isPrimeNumber(j)){
if(i+j==number){
s.append(i+"\n"+j);
return s.toString();
}
}
}
}
return null;
}
}