作者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/cn.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