题解 | #查找组成一个偶数最接近的两个素数#

查找组成一个偶数最接近的两个素数

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]); 
        }

    }
}

改进:
图片说明
图片说明

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务