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

筛法算法

发布时间: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

阅读全文

与筛法算法相关的资料

热点内容
windows下编译python 浏览:607
linux蓝牙连接 浏览:898
安卓qq邮箱格式怎么写 浏览:431
如何电信租用服务器吗 浏览:188
编程中计算根号的思维 浏览:183
可爱的程序员16集背景音乐 浏览:448
软件代码内容转换加密 浏览:797
什么app看电视不要钱的 浏览:16
乌班图怎么安装c语言编译器 浏览:280
plc通讯块编程 浏览:923
我的世界服务器怎么清地皮 浏览:422
ftp服务器如何批量改名 浏览:314
网易我的世界服务器成员如何传送 浏览:268
公司云服务器远程访问 浏览:633
法哲学pdf 浏览:638
清大阅读app是什么 浏览:447
怎么用qq浏览器整体解压文件 浏览:587
肺组织压缩15 浏览:271
安卓手机为什么换电话卡没反应 浏览:798
诸子集成pdf 浏览:340