作者decken (HAHAHA~)
看板Python
標題[問題] Python 大數據處理
時間Thu Nov 12 19:14:53 2015
大家好,
寫了一個求質數程式(列出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://webptt.com/m.aspx?n=bbs/Python/M.1447326897.A.106.html
1F:→ ccwang002: 1M 算大數據嗎…… 而且你算法應該不是列出你要的質數 11/12 19:33
2F:→ ccwang002: 恩你是用 Fermat primality test? 11/12 19:37
3F:推 yogi: 好妙的判斷prime法 11/12 19:37
4F:→ ccwang002: 算到 1e6 的時候,就要算 2 ** (1e6-1) 感覺數字很大 11/12 19:38
5F:→ ccwang002: 一般常見是用 Sieve of Eratosthenes 去篩質數 11/12 19:39
6F:推 ccwang002: 例如 num = 341 就是反例,他不是質數(查 wiki 的) 11/12 19:41
8F:→ decken: 感謝回覆,來看一下! 11/12 20:15
9F:推 CaptainH: 這就是資工系價值所在 11/12 22:47
10F:→ mikapauli: 他的問題是可能沒空間放質數表吧?不然直接做質數表就好 11/12 23:04
11F:→ mikapauli: 另外一直print其實也會需要些時間。而且怎麼會用 11/12 23:06
12F:→ mikapauli: Fermat's little theorem? XD 11/12 23:06
13F:→ mikapauli: 要也是用Wilson's theorem吧(誤 11/12 23:10
14F:→ MOONY135: 這樣算大數據? 11/13 11:07
15F:→ MOONY135: 這個只是質數就會有這種特性吧 數論上找質數 11/13 11:11
16F:→ MOONY135: 不是這樣找的 11/13 11:11
17F:→ MOONY135: 好久沒有碰數論問題了 好懷念 11/13 11:31
18F:→ johnny94: 這叫 Big Number 不是 Big data 11/17 15:48
19F:推 MIKEmike07: 推樓上,差點噴飯XD 11/22 15:54