Re: [問題] 作出可判斷質數的程式

看板java作者 (!H45)時間19年前 (2006/09/30 02:20), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串9/9 (看更多)
※ 引述《tkcn.bbs@inf.csie.thu.edu.tw (小安)》之銘言: : 【 在 Saren.bbs@bbs.wretch.cc () 的大作中提到: 】 : : 試試這個 i從2開始 一直到根號n : : for(i=2;i<=sqrt(n);i++) { : : if(n%i) { : : system.out.println(n+"is prime number!"); : : i=n; : : } : : } : : 那它的時間複雜度降到n^(1/2) : 對一個數檢查是否為質數是只需 n^(1/2) 沒錯 : 但是這裡應該用檢查 n 個數來比較才是,所以應該是 n^(3/2) : 而你所提的演算法其實是可以改進的, : 只要把目前的 for 迴圈的 i 改成只跑已經算出來的質數 (當然,同樣是小於 sqrt(n) ) : 也就是前面 TonyQ 所提過的方法 : 我所提的方法其實也是這樣,雖然看起來是 O(n^2) : 但其實與 TonyQ 的運算方式差不多 : 而在一些瑣碎的地方應該是更為精簡 (這部分就純粹只是個人觀點了) 看看這個連結吧: http://primes.utm.edu/prove/prove4_3.html 對一個數檢查是否為質數並不需要到 O(n^(1/2)) 喔 這個連結指出 O((log n)^12 f(log log n)) where f is a polynomial. 所以求質數的方法還可以再改進的 至少目前為止 po 出來的程式碼都沒有我所記錄過的 code 還快 @_@ -- 是不是該移駕到 prob_solve 板討論了呢 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.205.85

09/30 10:09, , 1F
是阿... Prob_Solve版很可憐阿....
09/30 10:09, 1F
文章代碼(AID): #157MFZ9q (java)
討論串 (同標題文章)
文章代碼(AID): #157MFZ9q (java)