学习目标:
目标:熟练运用Java所学知识
学习内容:
本文内容:使用java解决 查找组成一个偶数最接近的两个素数
题目描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。
本题含有多组样例输入。
输入描述:
输入一个偶数
输出描述:
输出两个素数
示例1
输入
20
输出
7
13
解题思路
这个题目不算很难,核心操作就是一个判断素数和一个简单的循环。
我最开始的判断素数的方法是以下代码
public static boolean isPrime(int m){
for(int i=2;i<m;i++){
if(m%i==0){
return false;
}
}
return true;
}
这个代码还可以继续优化,将循环的边界条件改为i*i<=m,因为只要小于m的平方根的数中存在除了1以外的因子,则这个数就不是素数,否则是素数
public static boolean isPrime(int m){
for(int i=2;i*i<=m;i++){
if(m%i==0){
return false;
}
}
return true;
}
实现代码
public class Solution {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int num=sc.nextInt();
//查找差值最小的两个数,则直接从num/2开始查找
for(int i=num/2;i>1;i++){
if(isPrime(i)&&isPrime(num-i)){
System.out.println(num-i);
System.out.println(i);
break;
}
}
}
}
//判断素数
public static boolean isPrime(int m){
for(int i=2;i*i<=m;i++){
if(m%i==0){
return false;
}
}
return true;
}
}