前言
大家在学习高级语言时会经常遇到这样一个问题:输入一个数并判断它是不是素数,今天我们就来讲一讲这个问题的相关解决办法
提示:以下是本篇文章正文内容,下面案例可供参考
一、素数(又称质数)定义
素数是指在大于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+"是素数");
}
}
测试案例如下:
总结
本文介绍了判断一个数字是否是素数,读者需要对笔者提供的方法进行理解,一定要在理解的情况下去写代码,这样你的代码才能每日俱进!预祝读者学习愉快!