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

📜个人简介

⭐️个人主页:摸鱼の文酱博客主页🙋‍♂️
🍑博客领域:java编程基础,mysql
🍅写作风格:干货,干货,还是tmd的干货
🌸精选专栏:【Java】【mysql】 【算法刷题笔记】
🎯博主的码云gitee,平常博主写的程序代码都在里面。
🚀支持博主:点赞👍、收藏⭐、留言💬
🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

文章目录

<font color=>📃查找组成一个偶数最接近的两个素数

🎯1.原题链接

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

🎯2.题目要求

  任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对

  输入描述:输入一个大于2的偶数

  输出描述:从小到大输出两个素数

  样例输入: 20

  样例输出: 7   13

🎯3.基础框架

java版本的基础框架代码如下:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
      
}

🎯4.解题思路

  1.组成偶数的情况有多种,20=3+17,20=7+13,要求输出的是素数差值最小的素数对。可以先找20以内的第一个素数,再判断另一个数(20 - 第一个素数)是否为素数就可以得到一个素数对。

  2. 要求素数对差值最小,如果从2开始往后寻找素数找到的第一对素数不一定符合要求,需要再往后找,效率较低。可以用另一种方法,即假设n为输入的偶数,从n/2处开始向两端判断,由于两个素数之和等于n,那么这两个素数中只能是一个大于n/2,一个小于n/2,这样从一开始找到的素数对就符合素数差值最小的要求了。

🎯5.完整代码

import java.util.Scanner;

public class Main {
    //即假设n为输入的偶数,从n/2处开始向两端判断,由于两个素数之和等于n,那么这两个素数中只能是一个大于n/2,一个小于n/2,
    // 这样从一开始找到的素数对就符合素数差值最小的要求了。

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        for (int i = x/2; i < x-1; i++) {
            if(PrimeNum(i) && PrimeNum(x-i)){//判断是否为素数对
                System.out.println(x-i);
                System.out.println(i);
                break;
            }
        }

    }

    private static boolean PrimeNum(int x) {//判断素数
        for (int i = 2; i < x/2; i++) {
            if(x%i == 0){
                return false;
            }
        }
        return true;
    }
}

🎯6.涉及算法&总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值