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

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

筛选法求素数

 

但是,当求很多素数的时候就不合理了,每个数都有遍历

今天发现这个筛选法很不错。

求limit内的所有素数

 

V1.0

步骤:

1:从2开始

2:2是素数,去除2的倍数的数

3:下一个数是3,则3是素数,去除所以3的倍数的数

4:下一个数是5,则5是素数,去除是5的倍数的数

《为什么不是4,4是2的倍数,已经去除》

5:就这样一直遍历下去

Java程序:

 

int[] setPrime1(int limit){        //prime 是保存的素数数组        //notPrime 是保存的是否是素数的下标                int prime[] = new int[limit];        boolean notPrime[] = new boolean[limit];//默认 false        // true  不是素数        // false 是素数        int p = 0;        for(int i=2;i
View Code

 

V2.0

思想:

1.2是素数

2.除以2余数是0的数不是素数,一次筛选

3.2中没有把3筛选掉,同样,除以3余数是0的筛选掉

4.2中已经把4筛选掉了,下一个数从5开始,

5.重复上面过程

Java程序:

int[] setPrime2(int limit){        int prime[]= new int[limit];        boolean isPrime = true;        //true 是素数        //false 不是素数        prime[0] = 2;        int p =1;        for(int i=3;i
View Code

 

V2.1

在V1.0中定义两个数组,一个是存放素数的数组,一个是根据下标索引找素数的数组

当在一般情况只需要第二个数组的时候,就可以优化程序

这里有点不好说,看程序吧

自己体会下就是了

上界limit已经用sqrt(limit)附近的值判断了是否是素数

boolean[] setPrime3(int limit){        int prime[] = new int[limit];        int p = 0;        int subLimit = (int)Math.sqrt(limit)+1;        boolean notPrime[] = new boolean[limit];        for(int i=2;i
View Code

 

所有程序

package codeforces;public class findprime {        void run(){        int limit=10000;        int[] prime = setPrime2(limit);        for(int i=0;i
View Code

 

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

你可能感兴趣的文章
Skype for Business Server 2015-04-前端服务器-3-安装-管理工具
查看>>
关于mysql 删除数据后物理空间未释放(转载)
查看>>
CentOS6中httpd-2.2配置(1)
查看>>
Cisco ASA防火墙原地址与目的地址NAT
查看>>
Windows Server 2008 R2修改远程桌面连接数 .
查看>>
基于window.onerror事件 建立前端错误日志
查看>>
WP8开发日志(4):ResourceDictionary的外联
查看>>
[笔记]shell中算术扩展基础
查看>>
python 之中文全攻略
查看>>
MDT2012部署问题,Litetouch.wfs和Litetouch.vbs的区别
查看>>
__init__.py 作用详解
查看>>
puppet安装使用教程(四)--puppet的工作原理及工作过程
查看>>
mysql查询今天、昨天、上周
查看>>
【Composer】实战操作二:自己创建composer包并提交
查看>>
linux 安装
查看>>
基于Redis的作业执行设计总结
查看>>
php添加mysqli扩展
查看>>
右下角弹窗,CSS
查看>>
linux基础入门命令---whereis、whatis、which命令
查看>>
linux添加用户切换后显示-bash4.1$的解决办法
查看>>