【发布时间】:2014-11-20 04:35:53
【问题描述】:
我正在尝试使用 Python 制作素数计算器。我设法编写了一个顺序版本,但我必须使其并行。
要求:
质数必须由函数重新计算,而不是 在某处被人仰视。
必须有 2 个线程参与计算
程序应该尽可能快
现在我的代码是:
import sys
import math
import cProfile
def is_prime(num):
for j in range(2,int(math.sqrt(num)+1)):
if (num % j) == 0:
return False
return True
def prime(nth):
"""Return the nth prime number.
>>> prime(3)
The 3th prime number is: 5
>>> prime(4)
The 4th prime number is: 7
>>> prime(1000)
The 1000th prime number is: 7919
"""
i = 0
num = 2
while i < nth:
if is_prime(num):
i += 1
if i == nth:
print('The ' + str(nth) + 'th prime number is: ' + str(num))
num += 1
if __name__ == "__main__":
import doctest
doctest.testmod()
cProfile.run('print(prime(1000))')
【问题讨论】:
-
您的代码看起来不错。问题是什么?我还认为,如果您只想找到 1000 的素数,那么 2. 和 3. 是互斥的。
标签: python multithreading performance primes