@yexiaoqi
2022-05-20T16:39:22.000000Z
字数 673
阅读 436
刷题
题目:任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。
数据范围:输入的数据满足 4≤n≤1000
输入描述:输入一个大于2的偶数
输出描述:从小到大输出两个素数
示例:
输入:20
输出:7
13
链接:https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
默认使用穷举;因为要求差值最小的两个,也可以从n/2向前遍历,碰到的第一个i和n-i就是要求的结果
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int min = Integer.MAX_VALUE;
int a = 0;
int b = 0;
for(int i=2; i<n; i++){
if(isPrime(i) && isPrime(n-i)){
int abs = Math.abs(n-i-i);
if(abs < min){
a = i;
b = n-i;
min = abs;
}
}
}
System.out.println(a);
System.out.println(b);
}
}
public static boolean isPrime(int n){
for(int i=2; i<n; i++){
if(n%i == 0) return false;
}
return true;
}
}