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+"是素数");
        }
    }

测试案例如下:
java超详细:判断一个数字是不是素数进阶方法_第1张图片
java超详细:判断一个数字是不是素数进阶方法_第2张图片


总结

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

你可能感兴趣的:(java快速入门,java,素数)