[問題] Python 大數據處理

看板Python作者 (HAHAHA~)時間8年前 (2015/11/12 19:14), 編輯推噓4(4015)
留言19則, 8人參與, 最新討論串1/2 (看更多)
大家好, 寫了一個求質數程式(列出1~1000000000之間所有質數): http://i.imgur.com/WxDZQun.png?1 def is_prime(num): if num == 2: return True if not num & 1: return False return pow(2, num-1, num) == 1 for i in xrange(3, 1000000000+1): if is_prime(i): print i 發現Python在處理大數據時的效率並不好, 上面的程式執行需要半小時以上(程式寫得不好也是原因之一), 不知道大家處理大數據還是會用C/C++嗎? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 212.201.72.129 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1447326897.A.106.html

11/12 19:33, , 1F
1M 算大數據嗎…… 而且你算法應該不是列出你要的質數
11/12 19:33, 1F

11/12 19:37, , 2F
恩你是用 Fermat primality test?
11/12 19:37, 2F

11/12 19:37, , 3F
好妙的判斷prime法
11/12 19:37, 3F

11/12 19:38, , 4F
算到 1e6 的時候,就要算 2 ** (1e6-1) 感覺數字很大
11/12 19:38, 4F

11/12 19:39, , 5F
一般常見是用 Sieve of Eratosthenes 去篩質數
11/12 19:39, 5F

11/12 19:41, , 6F
例如 num = 341 就是反例,他不是質數(查 wiki 的)
11/12 19:41, 6F

11/12 19:52, , 7F
11/12 19:52, 7F

11/12 20:15, , 8F
感謝回覆,來看一下!
11/12 20:15, 8F

11/12 22:47, , 9F
這就是資工系價值所在
11/12 22:47, 9F

11/12 23:04, , 10F
他的問題是可能沒空間放質數表吧?不然直接做質數表就好
11/12 23:04, 10F

11/12 23:06, , 11F
另外一直print其實也會需要些時間。而且怎麼會用
11/12 23:06, 11F

11/12 23:06, , 12F
Fermat's little theorem? XD
11/12 23:06, 12F

11/12 23:10, , 13F
要也是用Wilson's theorem吧(誤
11/12 23:10, 13F

11/13 11:07, , 14F
這樣算大數據?
11/13 11:07, 14F

11/13 11:11, , 15F
這個只是質數就會有這種特性吧 數論上找質數
11/13 11:11, 15F

11/13 11:11, , 16F
不是這樣找的
11/13 11:11, 16F

11/13 11:31, , 17F
好久沒有碰數論問題了 好懷念
11/13 11:31, 17F

11/17 15:48, , 18F
這叫 Big Number 不是 Big data
11/17 15:48, 18F

11/22 15:54, , 19F
推樓上,差點噴飯XD
11/22 15:54, 19F
文章代碼(AID): #1MH7In46 (Python)
文章代碼(AID): #1MH7In46 (Python)