题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
先找出所有该偶数以内的素数,放入一个数组中,然后遍历判断各个素数之和是否为该偶数,顺便记录下符合条件的两个素数的差,赋值给min,并且记录这两个素数的下标。有更小的差值则更新min和下标,最后通过下标输出这两个素数。(其实就是暴力法)
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int num = 0;
for(int i = 2;i < n;i++){
int flag = 1;
for(int j = 2;j < i;j++){
if(i % j == 0){
flag = -1;
break;
}
}
if(flag == 1)
num++;
}
int[] nums = new int[num];
for(int i = 2,k = 0;i < n;i++){
int flag = 1;
for(int j = 2;j < i;j++){
if(i % j == 0){
flag = -1;
break;
}
}
if(flag == 1){
nums[k] = i;
k++;
}
}
int min = 1001;
int index1 = 0;
int index2 = 0;
for(int i = 0;i < nums.length;i++){
for(int j = i;j < nums.length;j++)
if(nums[i] + nums[j] == n && Math.abs(nums[i] - nums[j]) < min){
index1 = i;
index2 = j;
min = Math.abs(nums[i] - nums[j]);
}
}
if(nums[index1] > nums[index2]){
System.out.println(nums[index2]);
System.out.println(nums[index1]);
}else{
System.out.println(nums[index1]);
System.out.println(nums[index2]);
}
}
}改进:
360集团公司氛围 371人发布
查看5道真题和解析