大厂Java笔试题之找出组成一个偶数最大的两个素数

题目:找出组成一个大于2的偶数最接近的两个素数。

比如 输入20 输出7 13

注意:这里有一个理论,任意一个大于2的偶数,都能找到2个素数,相加等于这个偶数。

java 复制代码
public class Demo10 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int[] number = getNumber(a);
            System.out.println(number[0]);
            System.out.println(number[1]);
        }
    }
    
    private static int[] getNumber(int num) { // 获取两个最接近的素数
        if (num % 2 != 0 || num <= 2) {
            throw new IllegalArgumentException("参数错误");
        }
        int initdiff = num;
        for (int i = 2; i < num; i++) {
            if (isSushu(i) && isSushu(num - i) && num >= (2 * i)) {
                int diff = num - 2 * i;
                if (diff < initdiff) {
                    initdiff = diff;
                }
            }
        }
        int num1 = (num - initdiff) / 2;
        int num2 = num - num1;
        int[] res = new int[2];
        res[0] = num1;
        res[1] = num2;
        return res;
    }

    private static boolean isSushu(int num) { // 判断是否素数
        if (num <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}

如果大家需要视频版本的讲解,欢迎关注我的B站:

相关推荐
147API2 分钟前
Claude Tag 进入 Slack 后,团队智能体需要哪些任务与审计字段
java·开发语言·数据库
dyonggan7 分钟前
IDEA从零搭建SpringCloud Alibaba完整工程
java·spring cloud·intellij-idea
流浪00112 分钟前
数据结构篇(四):线性表——链表——双链表
数据结构·链表
代码雕刻家14 分钟前
编程语法细节
java·c语言·开发语言
SimonKing16 分钟前
Agnes AI出桌面版了,可图可视频,免费用
java·后端·程序员
左左右右左右摇晃36 分钟前
手写Tomcat原理整理
java·开发语言·笔记·tomcat
孫治AllenSun39 分钟前
【JVM】四大引用类型分析
java·开发语言·jvm
于慨41 分钟前
安装java
java
夕除42 分钟前
sign 是什么
java·前端
小七在进步1 小时前
数据结构:堆排序
数据结构