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

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

https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9

import java.util.Scanner;

/**
 * @author sqwangdc
 * @date 2024/6/16
 * @Description HJ60 查找组成一个偶数最接近的两个素数
 * 穷举:
 * 从给定数的中间开始向两边枚举,mid=n/2,先判断mid本身是不是素数,如果是就直接输出mid, n-mid,例如:34,
 * 如果mid本身不是素数,则mid不断+1再尝试(此时,如果mid+1是素数,还需要判断n-mid是否是素数,不能直接输出mid,n-mid),直到找到 mid以及n-mid都为素数的情况,然后输出,这样可以保证两数的差距最小
 */
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int n = input.nextInt();

        findSum(n);
    }

    private static void findSum(int n) {

        int mid = n / 2;
        // 1.先判断mid是不是素数,如果是,输出 mid、 mid
        // 调用判断素数函数
        boolean primeNumber = isPrimeNumber(mid);
        if (primeNumber) {
            System.out.println(mid);
            System.out.println(mid);
            return;
        }

        // 2.如果 mid不是素数,mid+1,再判断是不是素数,如果是,输出 mid+1,n-(mid+1),如果不是,mid再+1,然后再判断是不是素数...
        // (一个偶数最多+3就会变成素数)
        for (int i = 1; i < n / 2; i++) {
            mid = mid + 1;
            boolean primeNumber1 = isPrimeNumber(mid);
            boolean primeNumber2 = isPrimeNumber(n - mid);
            if (primeNumber1 && primeNumber2) {
                System.out.println(n - mid);
                System.out.println(mid);
                return;
            }
        }
    }


    private static boolean isPrimeNumber(int mid) {

        if (mid == 1 || mid == 2 || mid == 3) {
            return true;
        }

        for (int i = 2; i < mid / 2; i++) {
            if (mid % i == 0) {
                return false;
            }
        }
        return true;
    }
}

全部评论

相关推荐

找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
zhch7:建议9✌️把学历加黑加粗,如果实在offer可能是觉得佬不会去
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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