[問題] 質數判斷的效率?

看板C_and_CPP (C/C++)作者 (大笨羊)時間13年前 (2012/12/27 19:40), 編輯推噓2(2011)
留言13則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 問題(Question): 大家好 小弟是一名高中生 對程式有些興趣 最近發現了一個網站 ( http://zerojudge.tw/ ) 感覺還滿好玩的 不過有一題我卻沒辦法拿到 AC (過關) 題目如下: http://zerojudge.tw/ShowProblem?problemid=a007 難的不是判斷質數 而是效能的問題 他似乎有算時間 如果算太慢就無法通過(編譯器是在伺服器上) 我的作法單單只是把數字開根號 找底下的整數去除 本來我想用質數來運算 可是不知道如何下手 不知道要怎麼寫效能才會是最高的 感謝各位大大的回答! 我的程式碼:http://ideone.com/YzDn3X 獻醜了 囧 謝謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.241.57.123

12/27 19:42, , 1F
去找找演算法吧,或是用查表法
12/27 19:42, 1F

12/27 19:43, , 2F
效率最高的應該是 template metaprogramming
12/27 19:43, 2F

12/27 20:06, , 3F
先建出根號下的質數表...上界的根號大概50000左右而已
12/27 20:06, 3F

12/27 20:07, , 4F
之後用這些做你原來的方法應該就OK了
12/27 20:07, 4F

12/27 20:07, , 5F
還是不OK可以1.改善根號效率 2.換演算法
12/27 20:07, 5F

12/27 20:14, , 6F
不建表可以踢掉一些簡單不必要的數不用算
12/27 20:14, 6F

12/27 20:17, , 7F
用個位數篩選就去掉2.4.5.6.8.0 只要注意1.3.7.9即可
12/27 20:17, 7F

12/27 20:22, , 8F
不對... 這方法不能解這題
12/27 20:22, 8F
※ 編輯: wa007123456 來自: 111.241.57.123 (12/27 20:37)

12/27 21:03, , 9F
先把 1~2^16 之間的質數算出來,之後就只要試這些數就好了
12/27 21:03, 9F

12/27 21:11, , 10F
就算用暴力法其實也很好過 http://codepad.org/tXObLSgI
12/27 21:11, 10F

12/27 21:23, , 11F
推一下樓上 有得到一些新想法
12/27 21:23, 11F

12/27 21:47, , 12F
C語言名題精選百則
12/27 21:47, 12F

12/27 23:29, , 13F
12/27 23:29, 13F
文章代碼(AID): #1Gt3EK-o (C_and_CPP)
文章代碼(AID): #1Gt3EK-o (C_and_CPP)