Re: [問題] 搜尋質數

看板java作者 (林帛亨加油!!!)時間14年前 (2011/07/03 03:26), 編輯推噓5(509)
留言14則, 5人參與, 最新討論串2/2 (看更多)
用你的code下去稍微修改 黃色為我有修改的部份 現在精神狀況不太好(好想睡) 希望沒有改錯 當然一定有更好的演算法啦XD class TestPrime { // 一維陣列的應用:求質數 public static void main(String args[]) { final int MAX = 300;// Once it is initiated it can not be changed. // false為質數,true為非質數 // 宣告後若沒有給定初值,其預設值為false boolean prime[] = new boolean[MAX]; prime[0] = true; prime[1] = true;// 0 and 1 are not prime; int count = 0; for (int i = 2; i < MAX; i++) { prime[i] = false; for (int a = 2; a*a <= i; a++) { if (i % a == 0) { prime[i] = true; break; } } } for (int i = 2; i < MAX; i++) { if (prime[i] == false) { count++; System.out.println(i); } } System.out.println("the number of prime is " + count); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.51.171 ※ 編輯: peacedove 來自: 220.135.51.171 (07/03 03:37) ※ 編輯: peacedove 來自: 220.135.51.171 (07/03 11:22)

07/03 22:00, , 1F
感謝!!!終於可以跑了QQ
07/03 22:00, 1F

07/03 22:02, , 2F
請問一下那個for回圈為什麼是用a*a<=i, 而不是a<i就可以呢?
07/03 22:02, 2F

07/03 23:53, , 3F
迴圈可以跑比較少圈吧
07/03 23:53, 3F

07/04 13:14, , 4F
如果有因數的話會是兩兩成對 所以只要測完前面一半就足夠了
07/04 13:14, 4F

07/04 14:41, , 5F
其實可以跑得更少
07/04 14:41, 5F

07/04 14:43, , 6F
判斷 2 3 5 7 9 11 13....<= Num/2 2以外的偶數不用測
07/04 14:43, 6F

07/04 14:47, , 7F
打錯 XD 是 floor(pow(Num,0.5)) 不是Num/2
07/04 14:47, 7F

07/04 18:26, , 8F
是啊 可是程式碼要改動太多了 就算了
07/04 18:26, 8F

07/04 18:29, , 9F
其實2跟3的倍數都可以跳過
07/04 18:29, 9F

07/05 03:22, , 10F
還有只要檢查質數之類的
07/05 03:22, 10F

07/06 14:59, , 11F
只要檢查質數這件事本身就沒什麼意義
07/06 14:59, 11F

07/06 15:01, , 12F
1是質數本身沒有規律 2.是過濾的數量 去掉偶數就少一半
07/06 15:01, 12F

07/06 15:17, , 13F
用個arraylist就可以解決質數本身沒規律的問題啦
07/06 15:17, 13F

07/06 15:19, , 14F
相關的演算法討論 之前板上就有討論過了
07/06 15:19, 14F
文章代碼(AID): #1E3t38Qk (java)
討論串 (同標題文章)
文章代碼(AID): #1E3t38Qk (java)