说明

第一次写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()优化)相关推荐

  1. 求100以内的质数,质数定义为只能被1和其本身整除的数

    求100以内的质数,质数定义为只能被1和其本身整除的数 下面展示代码: package com.q.contact;public class HelloWorld {public static voi ...

  2. 输出100以内的质数 java

    java输出100以内的质数 class Ab{public static void main(String[] args){boolean isFlag = true; //标识i是否能被j除尽,一 ...

  3. 计算100以内最大质数和求100以内的质数

    #计算100以内最大质数 for n in range(100,1,-1):#如果n==2时则最大质数为2if n==2:print('100以内最大质数为2')#判断是否为偶数if n%2==0:c ...

  4. C#求100以内的质数

    //控制台程序 static void Main(string[] args)       {           // 求100以内的质数           for (int i = 2; i & ...

  5. 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 ...

  6. php100以内质数求和,100以内的质数_PHP质数计算三种方法 php求100以内的质数

    摘要 腾兴网为您分享:PHP质数计算三种方法 php求100以内的质数,自动刷宝,长沙银行,猿辅导,愈加等软件知识,以及cf一键刷枪,业主名录采集软件,卡乐光电,魔方虚拟光驱,掌上徐州,卡农社区,fa ...

  7. Golang 008. 求100以内的质数

    [基础入门题]Golang 008. 求100以内的质数 求100以内的质数,又称素数,即只能被1和本身整除的整数. ---------------------------- 源代码: package ...

  8. java100以内的质数_Java求100以内的质数的四种方法

    质数: 又称素数,只能被1和它本身整除的数就是质数. 难点: 需要两层循环,外层循环99遍: 内层循环,控制除数为2到98(也就是2到被除数前面的一个数). 为什么从2开始?因为所有数都能被1整除. ...

  9. 求100以内素数的方法(筛选法,穷举法,穷举法优化)

    一.基本思想 //质数(素数)是指在大于1的自然数中除了1和它本身以外不再有其他因数的自然数. (1)判断一个数n是不是素数,可以用2到(int)sqrt(n)之间的所有整数去除n,看能否整除,如果都 ...

最新文章

  1. MySQL Cluster安装
  2. python爬虫1——获取网站源代码(豆瓣图书top250信息)
  3. C语言核心技术——函数
  4. oracle代码实例,oracle存储过程代码实例
  5. java 反射机制 视频_【视频笔记】Java反射机制笔记
  6. Python异常:TypeError: a bytes-like object is required, not 'str'
  7. 三星GalaxyNote 10 Plus官方图曝光:前置相机竟换成了单摄?
  8. linux大量生成测试文件,Shell脚本创建指定大小文件的测试数据
  9. 我们在电脑房里上计算机课英语怎么说,2017年英语六级作文及翻译:计算机和人...
  10. hdu6110:路径交
  11. Raki的读paper小记:A Unified MRC Framework for Named Entity Recognition
  12. php fseek函数,C++_详解C语言中fseek函数和ftell函数的使用方法,fseek函数:int fseek(FILE * _ - phpStudy...
  13. Unity3D开发工具介绍
  14. Java——javac.exe、java.exe、javaw.exe的区别及Java运行机制
  15. 离线检查未安装的Windows更新
  16. skyeye与uClinux的安装
  17. 中英文字符的映射(TRANSLATE函数的运用)
  18. [因果推断] 什么是因果推断(一)
  19. JSON解析基础使用知识-Java
  20. 【雷达与对抗】【2006.09】多普勒模式匹配对雷达探测性能的改进

热门文章

  1. 基于SpringBoot实现文件上传功能(前端使用postman检查request)
  2. 从零学本体dApp开发(26):本体签名服务的API与Postman
  3. 19.MFA-Conformer: Multi-scale Feature Aggregation Conformer forAutomatic Speaker Verification
  4. matlab生成代码veri,一种自动生成状态机RTL代码的方法
  5. 库克暗示观念差异阻碍苹果和Facebook合作
  6. 7-54 福到了 (15 分)
  7. Quick 书签菜单插件使用方法
  8. 持续集成Jenkins+Gitlab
  9. 面试题 08.08. 有重复字符串的排列组合
  10. 数学之路-SPSS备忘(1)