導航:首頁 > 源碼編譯 > 篩法演算法

篩法演算法

發布時間: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

閱讀全文

與篩法演算法相關的資料

熱點內容
mac壓縮解壓視頻 瀏覽:904
這就是程序員魅力 瀏覽:294
京東java演算法筆試題 瀏覽:178
柱子加密箍筋不準有接頭 瀏覽:199
我的世界伺服器菜單插件如何使用 瀏覽:12
劉毅10000詞pdf 瀏覽:890
剛畢業的程序員會什麼 瀏覽:974
單片機控制64路開關量 瀏覽:982
win10截圖編程 瀏覽:420
怎樣把名字變成文件夾 瀏覽:203
文件怎麼搞成文件夾 瀏覽:730
多線程編程php 瀏覽:606
安卓機越用越卡有什麼辦法 瀏覽:17
高中生解壓操場適合做的游戲 瀏覽:395
程序員java招聘 瀏覽:462
未來之光手機雲伺服器 瀏覽:160
伺服器下載資料為什麼c盤滿了 瀏覽:265
怎麼清除空文件夾 瀏覽:544
如何查看派派伺服器 瀏覽:804
殺手6解壓畫面 瀏覽:671