[問題] Python 大數據處理

作者: decken (HAHAHA~)   2015-11-12 19:14:53
大家好,
寫了一個求質數程式(列出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++嗎?
謝謝!
作者: ccwang002 (亮)   2015-11-12 19:33:00
1M 算大數據嗎…… 而且你算法應該不是列出你要的質數恩你是用 Fermat primality test?
作者: yogi (Yogi)   2015-11-12 19:37:00
好妙的判斷prime法
作者: ccwang002 (亮)   2015-11-12 19:38:00
算到 1e6 的時候,就要算 2 ** (1e6-1) 感覺數字很大一般常見是用 Sieve of Eratosthenes 去篩質數例如 num = 341 就是反例,他不是質數(查 wiki 的)更多例子:https://oeis.org/A001567
作者: decken (HAHAHA~)   2015-11-12 20:15:00
感謝回覆,來看一下!
作者: CaptainH (Cannon)   2015-11-12 22:47:00
這就是資工系價值所在
作者: mikapauli (桜花)   2015-11-12 23:04:00
他的問題是可能沒空間放質數表吧?不然直接做質數表就好另外一直print其實也會需要些時間。而且怎麼會用Fermat's little theorem? XD要也是用Wilson's theorem吧(誤
作者: MOONY135 (談無慾)   2015-11-13 11:07:00
這樣算大數據?這個只是質數就會有這種特性吧 數論上找質數不是這樣找的好久沒有碰數論問題了 好懷念
作者: johnny94 (32767)   2015-11-17 15:48:00
這叫 Big Number 不是 Big data
作者: MIKEmike07 (加油!)   2015-11-22 15:54:00
推樓上,差點噴飯XD

Links booklink

Contact Us: admin [ a t ] ucptt.com