【发布时间】:2021-10-31 18:47:40
【问题描述】:
我正在尝试列出所有素数,直到一个特定的数字,例如1000. 随着数字的增加,代码变慢。我很确定这是因为所有prime_factors都检查了(数字-1)的for循环。需要一些建议我可以如何减少更大数字的代码处理时间。谢谢
import time
t0 = time.time()
prime_list = [2]
number = 0
is_not_prime = 0
count = 0
while number < 1000:
print(number)
for i in range (2,number):
count = 0
if (number%i) == 0:
is_not_prime = 1
if is_not_prime == 1:
for j in range (0,len(prime_list)):
if(number-1)%prime_list[j] != 0:
count += 1
if count == len(prime_list):
prime_list.append(number-1)
is_not_prime = 0
count = 0
break
number += 1
print(prime_list)
t1 = time.time()
total = t1-t0
print(total)
【问题讨论】:
-
在数学中,sieve of Eratosthenes 是一种古老的算法,用于查找不超过任何给定限制的所有素数。
-
感谢这真的有帮助
标签: prime-factoring