[問題] 找前 40 個質數出現奇怪的問題

看板Python作者 (Cosmajoonitist)時間13年前 (2011/11/10 15:13), 編輯推噓5(5013)
留言18則, 6人參與, 最新討論串1/6 (看更多)
i = 0 #dummy index x = 3 #prime candidates p = 2 #dividers print 2 #start from 2 while (i < 40): while (x > p): #get out of the loop only when p >=x if x%p != 0: p = p + 1 else: x = x + 1 print x i = i + 1 x = x + 2 p = 2 print 'Done!' 我是寫程式新手最近剛開始學 Python 我想計算前面 40 個質數 跑出來多半正確, 質數都沒有漏掉, 但卻多出來一些不是質數的比如 27 跟 35 但我把 27 丟回去怎麼看也不覺得會跑出 loop 之外 想請板上先進幫我看一下是怎麼回事...感激不盡 Orz.... -- e^(iπ) + 1 = 0 - Leonhard Euler -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 183.11.73.179 ※ 編輯: Equalmusic 來自: 183.11.73.179 (11/10 23:13)

11/10 23:25, , 1F
看不太懂...你的排板是不是跑掉了@@
11/10 23:25, 1F

11/10 23:30, , 2F
排版沒有亂, 但是演算法有問題
11/10 23:30, 2F

11/10 23:31, , 3F
else: x = x + 1 p也要回到2吧
11/10 23:31, 3F

11/10 23:33, , 4F
沒錯, p要讓他回到2, 不然會有些因數沒有檢查到
11/10 23:33, 4F

11/10 23:35, , 5F
阿原來如此!太感謝了!
11/10 23:35, 5F

11/10 23:36, , 6F
else: x = x + 1 後面要加 p = 2 讓 p 重頭檢驗
11/10 23:36, 6F

11/10 23:39, , 7F
題外話, 這個演算法還真的讓我困惑了一下QQ
11/10 23:39, 7F

11/10 23:48, , 8F
Python 板的前輩真熱心, 短短幾分鐘就這麼多回應 >_<b
11/10 23:48, 8F

11/10 23:49, , 9F
是喔...我的演算法很奇怪嗎?XDDD
11/10 23:49, 9F

11/10 23:59, , 10F
因為你每個數都要檢查2~自己本身, 所以會比較沒效率
11/10 23:59, 10F

11/11 00:00, , 11F
其實只要檢查2~自己本身之前的質數就好
11/11 00:00, 11F

11/11 00:00, , 12F
另外善用break會讓你的code看起來比較易懂
11/11 00:00, 12F

11/11 00:03, , 13F
甚至只要檢查到sqrt(自己本身)就可以了
11/11 00:03, 13F

11/11 00:05, , 14F
原來如此。我爬文的時候有爬到 break, 但我目前還沒學
11/11 00:05, 14F

11/11 00:05, , 15F
0.0"""
11/11 00:05, 15F

11/11 00:05, , 16F
所以想先用有教到的指令來做就好..
11/11 00:05, 16F

11/11 00:15, , 17F
也是~ 慢慢來比較好, 加油:)
11/11 00:15, 17F

11/11 01:06, , 18F
寫質數檢驗可以慢慢修XD 慢慢調整演算法的效率
11/11 01:06, 18F
文章代碼(AID): #1Ek-eL2H (Python)
討論串 (同標題文章)
文章代碼(AID): #1Ek-eL2H (Python)