看板 java 關於我們 聯絡資訊
用你的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)
Nozaki:感謝!!!終於可以跑了QQ 07/03 22:00
Nozaki:請問一下那個for回圈為什麼是用a*a<=i, 而不是a<i就可以呢? 07/03 22:02
qqwwee33:迴圈可以跑比較少圈吧 07/03 23:53
nameyi:如果有因數的話會是兩兩成對 所以只要測完前面一半就足夠了 07/04 13:14
shiengchyi:其實可以跑得更少 07/04 14:41
shiengchyi:判斷 2 3 5 7 9 11 13....<= Num/2 2以外的偶數不用測 07/04 14:43
shiengchyi:打錯 XD 是 floor(pow(Num,0.5)) 不是Num/2 07/04 14:47
peacedove:是啊 可是程式碼要改動太多了 就算了 07/04 18:26
peacedove:其實2跟3的倍數都可以跳過 07/04 18:29
peacedove:還有只要檢查質數之類的 07/05 03:22
shiengchyi:只要檢查質數這件事本身就沒什麼意義 07/06 14:59
shiengchyi:1是質數本身沒有規律 2.是過濾的數量 去掉偶數就少一半 07/06 15:01
peacedove:用個arraylist就可以解決質數本身沒規律的問題啦 07/06 15:17
peacedove:相關的演算法討論 之前板上就有討論過了 07/06 15:19