数据库中python的清单

时间:2019-01-14 15:04:51

标签: python mysql

我在python中的代码,用于使用eratosthenes筛子查找所有质数到任意给定的限制

"""my_code"""
import time
start = time.time()
L= list(range(2,100000))
for i in L[:]:
    for j in L:
        k=j%i
        #print(j)
        if k==0 and i!=j:
            L.remove(j)

print (L)
print ("sum is:",sum(L))
print("len is", len(L))
end = time.time()
print("time is",end-start)
"""my_code"""

代码是正确的,但是我有一个问题,当我想查找2到2百万之间的所有质数时,代码需要很长时间。我不得不等待一天而没有得到结果。

我的朋友给了我一个主意,那就是尝试使用mysql在数据库中执行列表。我不知道如何,所以如果有人对问题或想法有解决方案,请帮忙。

1 个答案:

答案 0 :(得分:0)

仅做几处更改即可将执行时间缩短60%。根据经验法则,请在迭代同一列表时使用删除元素。

import time
start = time.time()
out=[]
L= range(2,100000) # Do not convert it into list
for i in L:
    for j in range(2,int(i/2)+1): # Do not execute till the last element of L. Seriously no point in doing so
         if i%j==0:
            break # break as soon as you found out that the number is not prime.
         if j==i-1:
            out.append(i)

end = time.time()
print("time is",end-start)

您的代码花费了大约140秒的时间,而我的代码花费了大约50秒的时间来执行并找到第一个一百万个质数。