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

筛法算法

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

阅读全文

与筛法算法相关的资料

热点内容
采购岗位须要程序员吗 浏览:637
线性判别分析算法 浏览:425
解压折纸教程书 浏览:488
应广单片机代理 浏览:510
女白领吃甜食解压视频 浏览:818
md5加密系统中的应用 浏览:904
空调压缩机线路原理图 浏览:416
双钥加密技术有哪些 浏览:268
免费的pdf虚拟打印机 浏览:797
weblogic命令发布 浏览:911
编程入门基本功训练视频 浏览:987
单片机北邮 浏览:212
安卓平板如何用蓝牙传照片 浏览:426
ios8pdf下载 浏览:414
怀旧服大脚冷却计时命令 浏览:23
java求数组的最大值 浏览:840
出风口加密有什么弊端 浏览:803
横盘震荡趋势选股公式源码 浏览:474
程序员出差穿什么鞋 浏览:192
注册登陆验证源码 浏览:397