求100以内的质数(Java版定义法、break优化,Math.sqrt()优化)
说明
第一次写CSDN博客,一方面是记录自己学习复习,另一方面是向各位大牛学习,如有更优的算法,还望不吝赐教。
这是一个入门级的编程问题,常见的是求100以内的质数,这里为了能更好的体现算法的重要性,选择使用100000以内的质数
定义法
public class PrimeNumber {public static void main(String[] args) {boolean isFlag=true; //标识i是否被j除尽,一旦除尽,修改其值long start=System.currentTimeMillis(); //获得当前时间距离1970-01-01 00:00:00的毫秒时间System.out.print("100000以内的质数有:");for(int i=2;i<=100000;i++){ //检验100000以内的质数,最小质数为2for(int j=2;j<i;j++){ //根据质数的定义,检验是否只能被1和本省整除if (i%j==0){ //出现非本数整除,则不是质数isFlag=false;}}if (isFlag==true){System.out.print(i+" "); //输出质数}isFlag=true; //重装isFlag的值为true,是的能够检验质数}long end=System.currentTimeMillis();System.out.println(); //换行System.out.println("花费的时间为:"+(end-start)); }
}
运行时间(毫秒):
优化一:break
public class PrimeNumber {public static void main(String[] args) {boolean isFlag=true; //标识i是否被j除尽,一旦除尽,修改其值long start=System.currentTimeMillis(); //获得当前时间距离1970-01-01 00:00:00的毫秒时间System.out.print("100000以内的质数有:");for(int i=2;i<=100000;i++){ //检验100000以内的质数,最小质数为2for(int j=2;j<i;j++){ //根据质数的定义,检验是否只能被1和本省整除if (i%j==0){ //出现非本数整除,则不是质数isFlag=false;break; //优化一:当出现整除数时停止循环}}if (isFlag==true){System.out.print(i+" "); //输出质数}isFlag=true; //重装isFlag的值为true,是的能够检验质数}long end=System.currentTimeMillis();System.out.println(); //换行System.out.println("花费的时间为:"+(end-start));}
}
优化一运行时间(毫秒):
优化二:Math.sqrt()
public class PrimeNumber {public static void main(String[] args) {boolean isFlag=true; //标识i是否被j除尽,一旦除尽,修改其值long start=System.currentTimeMillis(); //获得当前时间距离1970-01-01 00:00:00的毫秒时间System.out.print("100000以内的质数有:");for(int i=2;i<=100000;i++){ //检验100000以内的质数,最小质数为2for(int j=2;j<Math.sqrt(i);j++){ //优化二,使用Math.sqrt()再次减少检测的范围。math.sqrt()返回正确舍入的 double 值的正平方根。if (i%j==0){ //出现非本数整除,则不是质数isFlag=false;break; //优化一:当出现整除数时停止循环}}if (isFlag==true){System.out.print(i+" "); //输出质数}isFlag=true; //重装isFlag的值为true,是的能够检验质数}long end=System.currentTimeMillis();System.out.println(); //换行System.out.println("花费的时间为:"+(end-start));}
}
优化二运行时间(毫秒):
仅输出个数版本:减少输出所花耗的时间,仅输出个数
public class PrimeNumber {public static void main(String[] args) {boolean isFlag=true; //标识i是否被j除尽,一旦除尽,修改其值int count=0; //记录质数的个数long start=System.currentTimeMillis(); //获得当前时间距离1970-01-01 00:00:00的毫秒时间System.out.print("10000以内的质数有:");for(int i=2;i<=10000;i++){for(int j=2;j<Math.sqrt(i);j++){ //优化二,使用Math.sqrt()再次减少检测的范围,math.sqrt()返回正确舍入的 double 值的正平方根。if (i%j==0){isFlag=false;break; //优化一,当发现非质数时,及时停止测试}}if (isFlag==true){count++;}isFlag=true;}long end=System.currentTimeMillis();System.out.println(count+"个"); //优化三,依次输出每个质数,画好时间System.out.println();System.out.println("花费的时间为:"+(end-start));}
}
运行时间(毫秒):
求100以内的质数(Java版定义法、break优化,Math.sqrt()优化)相关推荐
- 求100以内的质数,质数定义为只能被1和其本身整除的数
求100以内的质数,质数定义为只能被1和其本身整除的数 下面展示代码: package com.q.contact;public class HelloWorld {public static voi ...
- 输出100以内的质数 java
java输出100以内的质数 class Ab{public static void main(String[] args){boolean isFlag = true; //标识i是否能被j除尽,一 ...
- 计算100以内最大质数和求100以内的质数
#计算100以内最大质数 for n in range(100,1,-1):#如果n==2时则最大质数为2if n==2:print('100以内最大质数为2')#判断是否为偶数if n%2==0:c ...
- C#求100以内的质数
//控制台程序 static void Main(string[] args) { // 求100以内的质数 for (int i = 2; i & ...
- Python 求100以内的质数
Python 求100以内的质数 list=[] for i in range(2,101): for j in range(2,i): if i%j ==0: break else: list.ap ...
- php100以内质数求和,100以内的质数_PHP质数计算三种方法 php求100以内的质数
摘要 腾兴网为您分享:PHP质数计算三种方法 php求100以内的质数,自动刷宝,长沙银行,猿辅导,愈加等软件知识,以及cf一键刷枪,业主名录采集软件,卡乐光电,魔方虚拟光驱,掌上徐州,卡农社区,fa ...
- Golang 008. 求100以内的质数
[基础入门题]Golang 008. 求100以内的质数 求100以内的质数,又称素数,即只能被1和本身整除的整数. ---------------------------- 源代码: package ...
- java100以内的质数_Java求100以内的质数的四种方法
质数: 又称素数,只能被1和它本身整除的数就是质数. 难点: 需要两层循环,外层循环99遍: 内层循环,控制除数为2到98(也就是2到被除数前面的一个数). 为什么从2开始?因为所有数都能被1整除. ...
- 求100以内素数的方法(筛选法,穷举法,穷举法优化)
一.基本思想 //质数(素数)是指在大于1的自然数中除了1和它本身以外不再有其他因数的自然数. (1)判断一个数n是不是素数,可以用2到(int)sqrt(n)之间的所有整数去除n,看能否整除,如果都 ...
最新文章
- MySQL Cluster安装
- python爬虫1——获取网站源代码(豆瓣图书top250信息)
- C语言核心技术——函数
- oracle代码实例,oracle存储过程代码实例
- java 反射机制 视频_【视频笔记】Java反射机制笔记
- Python异常:TypeError: a bytes-like object is required, not 'str'
- 三星GalaxyNote 10 Plus官方图曝光:前置相机竟换成了单摄?
- linux大量生成测试文件,Shell脚本创建指定大小文件的测试数据
- 我们在电脑房里上计算机课英语怎么说,2017年英语六级作文及翻译:计算机和人...
- hdu6110:路径交
- Raki的读paper小记:A Unified MRC Framework for Named Entity Recognition
- php fseek函数,C++_详解C语言中fseek函数和ftell函数的使用方法,fseek函数:int fseek(FILE * _ - phpStudy...
- Unity3D开发工具介绍
- Java——javac.exe、java.exe、javaw.exe的区别及Java运行机制
- 离线检查未安装的Windows更新
- skyeye与uClinux的安装
- 中英文字符的映射(TRANSLATE函数的运用)
- [因果推断] 什么是因果推断(一)
- JSON解析基础使用知识-Java
- 【雷达与对抗】【2006.09】多普勒模式匹配对雷达探测性能的改进
热门文章
- 基于SpringBoot实现文件上传功能(前端使用postman检查request)
- 从零学本体dApp开发(26):本体签名服务的API与Postman
- 19.MFA-Conformer: Multi-scale Feature Aggregation Conformer forAutomatic Speaker Verification
- matlab生成代码veri,一种自动生成状态机RTL代码的方法
- 库克暗示观念差异阻碍苹果和Facebook合作
- 7-54 福到了 (15 分)
- Quick 书签菜单插件使用方法
- 持续集成Jenkins+Gitlab
- 面试题 08.08. 有重复字符串的排列组合
- 数学之路-SPSS备忘(1)