java超详细:判断一个数字是不是素数进阶方法


前言

大家在学习高级语言时会经常遇到这样一个问题:输入一个数并判断它是不是素数,今天我们就来讲一讲这个问题的相关解决办法


提示:以下是本篇文章正文内容,下面案例可供参考

一、素数(又称质数)定义

素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
大白话就是:这个数除了1和它本身不能被其他数整除
举例说明
8可以被1、2、4、8整除,除了1和8它还有其他的数可以整除,8不是素数。
7可以被1、7整除,除了1和本身之外没有数可以整除它,所以7是素数。

二、解题思路

比如用户输入一个n,让你判断是否是素数。常规的解题思路是从2开始到n-1结束,判断n能否整数2~(n-1)这些数。这种方法思路简单,但是时间复杂度太大,n比较小还好,n如果非常大,2 ~(n-1)这个区间也会无限放大,非常的不方便。

我们今天来介绍一种对n进行开方,然后遍历的方法,先来介绍原理:
一个数n可以写成n=a*b,比如16=1 * 16=2 * 8=4 * 4=8 * 2=16 * 1
a和b之间必然有一个数字是小于根号n(这里是根号16,也就是4)
以这里的16举例,判断完1 * 16,2 * 8,4 * 4后剩下的8 * 2,16 * 1情况是和前面重复的,所以我们这里只需要判断根号n前能不能整除即可

三、实战代码

public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int i=0;
        for(i=2;i<=Math.sqrt(n);i++)
        {
            if(n%i==0)
            {
                System.out.println(n+"不是素数");
                break;
            }
        }
        if(i>Math.sqrt(n))
        {
            System.out.println(n+"是素数");
        }
    }

测试案例如下:
在这里插入图片描述
在这里插入图片描述


总结

本文介绍了判断一个数字是否是素数,读者需要对笔者提供的方法进行理解,一定要在理解的情况下去写代码,这样你的代码才能每日俱进!预祝读者学习愉快!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

劲夫学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值