Java求素数(质数)的几种方法
什么是素数(质数)?
比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做质数或素数
思想,怎么做才能高效?
要判断X是否为质数,就从2一直尝试到x-1的做法效率是最差的! 其实只要从2一直尝试到√x,就可以了。因为因数都是成对出现的。比如,100的因数有:1和100,2和50,4和25,5和20,10和10。看出来没有?成对的因数,其中一个必然小于等于100的开平方,另一个大于等于100的开平方。
代码实现
效率由高到低
方法一(取平方根,效率高):
package hardCode;public class 素数_质数 {public static void main(String[] args) {boolean flag;for(int i=2;i<100;i++) {flag=true; //flag要放在循环里面,每个循环都要重新赋值for(int j=2;j<=Math.sqrt(i);j++) { //i取根号比除2这样效率高些if(i%j==0) {flag=false;break;}}if(flag) {System.out.println(i+" ");}}}}
package hardCode;public class 素数_质数 {public static void main(String[] args) {//输出100以内的素数int i=0;int j=0;for(i=1;i<=100;i++) {for(j=2;j<=(int)Math.sqrt(i);j++) {if(i%j==0) { //如果i可以与某个小于自身又不等于1的数整除break; //那么跳出循环}}if(j>(int)Math.sqrt(i)) {System.out.println(i);}}}}
方法二( /2 效率一般):
package hardCode;public class 素数_质数 {public static void main(String[] args) {boolean flag;for(int i=2;i<100;i++) {flag=true; //flag要放在循环里面,每个循环都要重新赋值for(int j=2;j<i/2;j++) { //i除了2这样效率高些if(i%j==0) {flag=false;break;}}if(flag) {System.out.println(i+" ");}}}}
方法三(效率最低):
package hardCode;public class 素数_质数 {public static void main(String[] args) {boolean flag;for(int i=2;i<100;i++) {flag=true; //flag要放在循环里面,每个循环都要重新赋值for(int j=2;j<i;j++) {if(i%j==0) {flag=false;break;}}if(flag) {System.out.println(i+" ");}}}}
Java求素数(质数)的几种方法相关推荐
- java求小于n的素数_java_Java实现求小于n的质数的3种方法,质数概念
质数,又称素数, - phpStudy...
Java实现求小于n的质数的3种方法 质数概念 质数,又称素数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数). 最小的素数是2,也是素 ...
- php100以内质数求和,100以内的质数_PHP质数计算三种方法 php求100以内的质数
摘要 腾兴网为您分享:PHP质数计算三种方法 php求100以内的质数,自动刷宝,长沙银行,猿辅导,愈加等软件知识,以及cf一键刷枪,业主名录采集软件,卡乐光电,魔方虚拟光驱,掌上徐州,卡农社区,fa ...
- 素数判断的几种方法代码实现及其复杂度分析
素数判断的几种方法代码实现及其复杂度分析 原文链接:http://blog.csdn.net/infinitezhen/article/details/8961964 一. 朴素判断素数 根据素数 ...
- java 匿名list,java创造匿名对象的两种方法
在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...
- java.lang.IllegalArgumentException异常处理的一种方法
java.lang.IllegalArgumentException异常处理的一种方法 参考文章: (1)java.lang.IllegalArgumentException异常处理的一种方法 (2) ...
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...
- 将JAVA编译为EXE的几种方法
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 将JAVA编译为EXE的 ...
- Java中创建数组的几种方法
Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...
- 在 Java 中初始化 List 的五种方法
转载自 在 Java 中初始化 List 的五种方法 Java 中经常需要使用到 List,下面简单介绍几种常见的初始化方式. 1.构造 List 后使用 List.add 初始化 List< ...
- 高级 | Java中获取类名的3种方法
转载自 高级 | Java中获取类名的3种方法 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonical ...
最新文章
- 简单图文配置golang+vscode【win10/centos7+golang helloworld+解决install failed等情况】
- java定时器检测状态_实用代码| shell脚本实现定时检查应用状态
- 4kyu Sum by Factors
- HTML5之内嵌框架
- php将文件夹打包zip文件,php将文件夹打包成zip文件
- C语言程序程序设计—数组
- python算法与数据结构-数据结构中常用树的介绍(45)
- 207. Course Schedule
- 读数据库所有表和表结构的sql语句了(mssql)
- linuxmake没有指明目标并且找不到makefile_如何写makefile?
- uip UDP 服务器广播模式(客户端可以任意端口,并且主动向客户端发送数据) (转)...
- [.NET开发] NPOI导出
- Hive sql 行列转换(行转列,列转行)
- android根据经纬度获取位置,Android获取经纬度
- 编译祁大神的iguana,大神就是大神.
- android好用的文件管理器,安卓哪种文件管理器好用 三款文件管理器横向评测
- zookeeper windows7下集群搭建
- 【原】在vc中实现获取汉字拼音的首字母 - lixiaosan的专栏 - CSDNBlog
- diy无感无刷电机霍尔安装_无刷直流电机霍尔传感器安装方法研究
- C语言程序设计实践教程 邹显春pdf