看板 C_and_CPP 關於我們 聯絡資訊
tropical72:http://0rz.tw/i2IuV 參考一下.也歡迎指正 09/14 22:54
bookticket:也感謝樓上的分享~~^^ 09/14 23:11
danielguo:篩法如果先建質數表的話會比較快~ 09/14 23:34
tropical72:同意D大說法,但測試的話不是就該以沒建的情形測嗎? 09/14 23:48
danielguo:嗯, 我的話會先建到sqrt(n)的質數表 (跑一次也是), 09/15 00:50
danielguo:數字越大的話越有效果~ (n太小的話就沒用) 09/15 00:50
danielguo:變成跑兩次篩法, 先跑 sqrt(n) 再跑 n 09/15 00:52
tropical72:請教d大,那您第一次跑的 sqrt(n) 建表的方式 09/15 01:56
tropical72:是用經驗法則還是篩法?是用 6n+-1吧? 09/15 01:57
tropical72:不然感覺很像是在做篩法的 recursive..不知我有誤會嗎 09/15 01:57
danielguo:yeah, 可以說是recursive, 這樣最大的那次篩法會變快 09/15 03:09
danielguo:sqrt(n) 那次用什麼都可以 (數字少) 09/15 03:10
danielguo:啊, 篩法只有建質數表好用, 作判斷是不是質數不快 09/15 03:15
danielguo:hmm, 我剛試了一下, 好像篩法可能真的會比較慢 XDD 09/15 04:08
danielguo:啊, 剛改了個 bug, 現在篩法壓倒性的快了 09/15 04:34
tropical72:謝謝 D 大的指教 ^^ 09/15 04:37
danielguo:不敢~ 我也是學了新用法 09/15 04:51
噢 我還是不太懂就是了~"~ 一個就是 http://0rz.tw/i2IuV 中的篩法用沒有避開偶數去跟有避開偶數的暴力法比較 如果篩法直接省略 2, 3 的倍數的話速度是很快的 篩到 10^7 在 0.2 秒內完成都沒問題 然後另外連結中的篩法是從 j = 2 而不是從 j = i*i 開始篩的,這樣速度差很多(默) 最不懂的是最後建質數表的地方Orz 如果使用篩法的話 建不建不都沒差了嗎 ? 反正也只要篩到 sqrt( n ) ,剩下的就是質數了呀 當然在某些題目適合建質數表,不過那是另一種狀況了吧 @____@a ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.65.82
danielguo:可以試試看我上篇的寫法~ 用質數篩比避開 2, 3 篩還快 09/16 00:42
danielguo:hmm, 後來看其實質數分佈還蠻密的 09/16 06:54
danielguo:啊, 我搞錯 Sieve 的演算法了 09/16 08:18