博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求质数的算法
阅读量:6965 次
发布时间:2019-06-27

本文共 1318 字,大约阅读时间需要 4 分钟。

求质数的算法

比如,求10 000 000中有多少个质数

质数是只能被1和自己整除的自然数(不包括1)。

笨办法就是一个个计算,用到两层嵌套的循环,数字一大算死人,代码如下:

public class PrimeNumbers {    public static void main(String[] args) {        final int max = 100;        int count = 0;        boolean flag = true;        for (int i = 2; i <= max; i++) {            for (int j = 2; j < i; j++) {                if (i % j == 0) {                    flag = false;                    break;                }                flag = true;            }            if (flag) {                count++;            }        }        System.out.println("质数数是:" + count);    }}

运行时间,如果求100 000以内的质数,大概2800毫秒,决定每次运行程序时系统的软硬件情况,不过就是这个数量级,没有大的变化。

那么如果不是质数,这个数就是合数,合数的最小因数小于它的平方根。

好了,聪明一点的办法来了,时间大大节省。

public class PrimeNumbers {    public static void main(String[] args) {        final int max = 100;        int count = 0;        boolean flag = true;        for (int i = 2; i <= max; i++) {            for (int j = 2; j <= Math.sqrt(i); j++) {                if (i % j == 0) {                    flag = false;                    break;                }                flag = true;            }            if (flag) {                count++;            }        }        System.out.println("质数数是:" + count);    }}

运行时间,如果求100 000以内的质数,大概30毫秒,决定每次运行程序时系统的软硬件情况,没有大的变化。

两次运行时间相差两个数量级,算法重要吗,当然很重要!
还有更好的算法吗?思考ing···

转载地址:http://iobsl.baihongyu.com/

你可能感兴趣的文章
????常用注意事项
查看>>
【★】KMP算法完整教程
查看>>
自制VTP实验总结
查看>>
[转载]Word直接发布新浪博客(以Word 2013为例)
查看>>
android简单分享----文字加图片
查看>>
01真假
查看>>
常用正则表达式
查看>>
发通知 PendingIntent 中Intent 内容没有更新
查看>>
在Linux环境安装memcached
查看>>
Caffe Windows版本的编译
查看>>
Fedora 30系统的升级方法
查看>>
js对时间格式化
查看>>
设计模式:适配器
查看>>
全面解读:腾讯 CDB 内核特性与优化实践
查看>>
Mac下的比较器工具DeltaWalker的试用期延长法
查看>>
PHP命名空间的使用规则
查看>>
ubuntu root下的无密码登陆
查看>>
Spads 公式解析系统 - Java
查看>>
CSS初始化样式
查看>>
[实战] 用数人云,部署弹性 ELK 集群就五步
查看>>