【发布时间】:2017-12-05 21:43:10
【问题描述】:
我有一个充满随机数的列表,我想从这个列表中返回素数。所以我创建了这些函数:
def is_prime(number):
for i in range(2, int(sqrt(number)) + 1):
if number % i == 0:
return False
return number > 1
和
def filter_primes(general_list):
return set(filter(is_prime, general_list))
但是我想提高性能,那我该如何实现呢?
【问题讨论】:
-
那里有 吨 的解决方案,特别是在 SO 上显示素数检查的实现。你检查过其中任何一个吗?
-
不确定这是否有助于提高性能,因为我没有时间测试任何东西,但这个
return True if number > 1 else False可以简化为:return number > 1。 -
是的,有很多质数检查的解决方案,但没有一个适用于随机数列表的场景。
-
@flpn:一个数字不会因为它在一个列表中而突然变得更少质数。
-
最好的,IMO,你能做的就是使用 Miller Rabin 作为主要测试算法。
标签: python algorithm performance python-3.x primes