导航:首页 > 源码编译 > 筛法算法

筛法算法

发布时间:2023-01-03 18:33:43

‘壹’ Java 求大神用Eclipse编写筛法求素数的具体代码

public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n=input.nextInt(); //输入要判断的多大值
find(n); //调用方法返回结果
}

public static void find(int n){
boolean[] res=new boolean[n+1];
for(int i=0;i<res.length;i++){
res[i]=true;
}
for(int i=2;i<=n/i;i++){ //从2 3 4 5开始
if(res[i]){ //如果i这个位置是true说明是素数
for (int j=i;j<=n/i;j++) { //从i的1倍 2倍 3倍开始
res[i*j]=false;
}
}
}
for(int i=2;i<res.length;i++){
if(res[i]){
System.out.print(i+" "); //输出素数
}
}
}

}

‘贰’ 生成素数表的算法有哪些

筛选法求素数表,最快的素数表生成算法。
所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛法”。他是古希腊的着名数学家。他采取的方法是,在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。
具体做法如下:
<1>
先将1挖掉(因为1不是素数)。
<2>
用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。
<3>
用3去除它后面的各数,把3的倍数挖掉。
<4>
分别用4、5…各数作为除数去除这些数以后的各数。这个过程一直进行到在除数后面的数已全被挖掉为止。例如找1~50的素数,要一直进行到除数为47为止(事实上,可以简化,如果需要找1~n范围内素数表,只需进行到除数为n^2(根号n),取其整数即可。例如对1~50,只需进行到将50^2作为除数即可。)
如上算法可表示为:
<1>
挖去1;
<2>
用刚才被挖去的数的下一个数p去除p后面各数,把p的倍数挖掉;
<3>
检查p是否小于n^2的整数部分(如果n=1000,
则检查p<31?),如果是,则返回(2)继续执行,否则就结束;
<4>
纸上剩下的数就是素数。
参考链接:http://blog.chinaunix.net/uid-9078996-id-2010292.html

阅读全文

与筛法算法相关的资料

热点内容
扫码识价app哪里可以买 浏览:551
wpstopdf转换器 浏览:639
怎么把pdf导入iphone 浏览:565
7z后缀文件解压缩 浏览:904
服务器为什么禁用三叉戟 浏览:934
解压小视频卸妆或化妆 浏览:555
太监程序员 浏览:56
java编译选项包括 浏览:433
安卓手机如何导其他手机的通讯录 浏览:931
离心式压缩机品牌 浏览:167
plc编程推荐什么电脑 浏览:936
安卓最新什么系统版本 浏览:193
甜颜app真人交友在哪里下载 浏览:335
电脑里好乱很多文件夹都是空 浏览:352
数学一窍不通可以学模具编程吗 浏览:271
退休程序员练字 浏览:693
海光服务器什么架构 浏览:138
战斗命令要素 浏览:953
app上哪里可以开鞋子盲盒 浏览:82
python多线程计划 浏览:384