Python中低于给定数字的素数之和
我已经编写了下面的代码块来计算低于某个数字的所有素数之和——在这种情况下,精确地说是200000,但是执行起来需要相当长的时间;20秒:Python中低于给定数字的素数之和,python,python-3.x,primes,Python,Python 3.x,Primes,我已经编写了下面的代码块来计算低于某个数字的所有素数之和——在这种情况下,精确地说是200000,但是执行起来需要相当长的时间;20秒: def summation_of_primes_below_n(n): list = [] sum = 0 for i in range(2, n): if checks_if_prime(i) == True: list.append(i) return list for j in list: sum = sum + j re
def summation_of_primes_below_n(n):
list = []
sum = 0
for i in range(2, n):
if checks_if_prime(i) == True:
list.append(i)
return list
for j in list:
sum = sum + j
return sum
def checks_if_prime(n):
if n == 2:
return True
import math
for i in range(2, math.ceil(math.sqrt(n))+1):
if n%i == 0:
return False
elif i == math.ceil(math.sqrt(n)):
return True
print(summation_of_primes_below_n(2000000))
所以我想知道是否有办法让我的代码更高效。我将非常感谢在这方面提供适当的建议。另外,我希望你给出更多的基本解决方案,因为我是一个初学者,并提供相同的逻辑。非常感谢 您可以从实现一些更好的算法开始。例如: 或者,如果您对当前的逻辑感到满意,那么可以进行一些优化:
- 仅检查奇数:
范围(3,n,2)内的i的
:
- 只检查表格的编号
- 对于每个迭代,您不需要执行以下检查:
。如果控制超出循环,则数字为素数elif i==math.ceil(math.sqrt(n)):
- 您可以将
转换为检查\u prime
。可以节省一些冗余,并可能改进引用的局部性生成器模式