Java 中判断素数我们有很多方法,每种方法时间复杂度也不一样。今天我汇总了一下,分享给大家。既可以输出前 50 或 n 个素数,也可以判断 100 (或 n) 以内的素数。

1. 从 2 到 x-1 测试是否可以整除

Scanner in = new Scanner(System.in);int x = in.nextInt();
boolean isPrime = true;
if ( x == 1)
{isPrime = false;
}
for( int i = 2; i< x; i++)
{if(x % i ==0){isPrime = false;break;}
}
if( isPrime)
{System.out.println(x +"是素数");}
else
{System.out.println(x+ "不是素数");
}

2. 去掉偶数后,从 3 到 x-1, 每次加 2

改进版,时间复杂度为 O(n/2)

if(x ==1 || x %2 ==0 && x !=2 )
{isPrime = false;
}
else
{for(int i =2; i<x; i +=2){if( x % i == 0){isPrime = false;break;}}
}
if( isPrime)
{System.out.println(x +"是素数");}
else
{System.out.println(x+ "不是素数");
}

3. 2 方法上的改进版,只需到 sqrt(x) 即可以

数学上可以证明,sqrt(x) 即 x 的平方根
时间复杂度为 O(sqrt(n))

if(x ==1 || x %2 ==0 && x !=2 )
{isPrime = false;
}
else
{for( int i =3; i< Math.sqrt(x); i+=2){if( x % i == 0){isPrime = false;break;}}
}
if( isPrime)
{System.out.println(x +"是素数");
}
else
{System.out.println(x+ "不是素数");
}

4. 找出前 50 个素数

判断是否能被已知的的且 <x 的素数整除
这个方法可扩展性很强,建议掌握。

int [] primes = new int[50];
primes[0] =2;
int cnt =1;
Main:
for(int x= 3; cnt<primes.length; x++)
{for(int i = 0; i< cnt; i++){if( x % primes[i] == 0){continue Main;}}primes[cnt++] = x;}
for ( int k: primes)
{System.out.print(k+ " ");
}

5. 用计算机的语言去思考

构造素数表,构造 n 以内的素数表

原理:

  1. 令 x =2;
  2. 将 2x、3x、4x 直至 ax<n 的数标记为非素数
  3. 令 x 为下一个没有被标记为非素数的数,重复 2;直至所有的数都已尝试完毕。
boolean[] isPrime = new boolean[100];
for( int i =2; i< isPrime.length; i++)
{isPrime[i] = true;
}
for(int i =2; i<isPrime.length; i++)
{if( isPrime [i]){for(int k=2; i*k < isPrime.length; k++){isPrime[i*k] = false;}}
}
for( int i = 0; i<isPrime.length; i++)
{if(isPrime[i]){System.out.print(i+ " ");}
}

好了,以上便是五种判断素数的方法,第四种和第五种方法要求掌握,相信你能很快学会,一定一定要上手实操,debug 一下,你就懂了。

System.out.println(“给我点个赞!”);

Java中判断素数的五种方法相关推荐

  1. 在 Java 中初始化 List 的五种方法

    转载自  在 Java 中初始化 List 的五种方法 Java 中经常需要使用到 List,下面简单介绍几种常见的初始化方式. 1.构造 List 后使用 List.add 初始化 List< ...

  2. 判断素数的五种方法最全埃筛素数欧筛素数孪生素数

    前言: 判断素数是编程中经常应用的实例,是编程学习的重要知识,那么下面我将介绍五种判断素数的方法. 定义: 素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 简单来说就是,如果一 ...

  3. java list定义和初始化_在 Java 中初始化 List 的五种方法

    Java 中经常需要使用到 List,下面简单介绍几种常见的初始化方式. 1.构造 List 后使用 List.add 初始化 这是最常规的做法,用起来不太方便. 2.使用 {{}} 双括号语法 这种 ...

  4. java中求素数的几种方法汇总及比较

    首先来看两道题目: 1. 请实现一个函数,对于给定的整型参数 N,该函数能够把自然数中,小于 N 的质数,从小到大打印出来.比如,当 N = 10,则打印出:2 3 5 7**重点内容** 2. 请实 ...

  5. Java中求素数的两种方法

    *如何求素数? ** 比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做质数或素数. 所以我们只需要在2~n-1的数中,能找到一个数能整除n,则n为素数. 所以用两个循环遍历就可以得到素 ...

  6. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  7. 高级 | Java中获取类名的3种方法

    转载自 高级 | Java中获取类名的3种方法 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonical ...

  8. Java中String字符串截取几种方法(substring,split)

    Java中String字符串截取几种方法 substring,split 这是一个Java中的String的基础用法的演示. 下面通过代码对大家进行讲解 substring 这里用来ndexOf,la ...

  9. C语言判断素数的两种方法

    C语言判断素数的两种方法 素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数, ...

  10. php判断质数,php如何判断是否为素数?判断素数的三种方法(代码示例)

    本篇文章给大家带来的内容是介绍php如何判断是否为素数?判断素数的三种方法(代码示例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 什么是素数? 质数又称素数.一个大于1的自然数 ...

最新文章

  1. idea 更改自动补全返回值_整理了一些 IDEA 中比较骚的技巧
  2. 目录/文件攻击防范策略研究
  3. Linux下的多线程编程
  4. IDEA运行Tomcat8.5.73源码
  5. php soap自动wsdl,在使用PHP的本机SOAP类时生成WSDL?
  6. Google Maps API 代码
  7. java quartz spring_JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务
  8. 程序员谈网络改变我们的生活
  9. C#绘制立体三维饼状图(超酷)
  10. Failed building wheel for scandir 解决方案
  11. java程序内存泄漏场景及预防
  12. iOS 使用自定义字体
  13. Pandas知识点-详解转换函数transform
  14. ftp服务器连接时间太长(耗时20s或40s)问题解决(超详细图文教程)
  15. 微服务:同步与异步的抉择。
  16. linux手机+华为,基于Linux打造,华为重磅宣布,开始在6款手机测试新系统
  17. 将数组矩阵进行转置,水平镜像,垂直镜像,翻转90°,180°
  18. linux zip unzip指令使用方法
  19. 基于深度学习的图像识别模型发展
  20. 【Excel】+自动生成图表

热门文章

  1. AppCompat是什么?
  2. UltraEdit 25注册机及免费破解注册教程(附带工具)
  3. word转pdf公式乱码_求助:Word转pdf时公式会公式变成乱码
  4. 计算机应用基础实践试题,计算机应用基础实践环节考试试题(一)
  5. 基于JAVA实现的WEB端UI自动化 -自动化测试简单介绍
  6. Mac上QQ音乐无损保存音频方法
  7. python3x菜鸟教程_菜鸟教程python3
  8. request python菜鸟教程_Python之学习菜鸟教程踩的坑
  9. vb计算机器,科学计算器vb代码
  10. [SQL面试经验] 经典sql面试题及答案第1期