Python素数和程序

Python素数和程序,python,algorithm,performance,math,Python,Algorithm,Performance,Math,我正在尝试使用python来解决ProjectEuler的问题 我遇到的问题是将所有低于200万的素数相加 我的代码: import math def isPrime(number): if number == 2: return True for x in range(2,number): if number % x ==0: return False return True number = 3 ans = 2 while number<=2000

我正在尝试使用python来解决ProjectEuler的问题

我遇到的问题是将所有低于200万的素数相加

我的代码:

import math

def isPrime(number):
if number == 2:
    return True
for x in range(2,number):
    if number % x ==0:
        return False
return True

number = 3
ans = 2 
while number<=2000000:
    if(isPrime(number)):
       print(number)
       ans+=number
    number+=2
导入数学
def iPrime(编号):
如果数字==2:
返回真值
对于范围内的x(2,编号):
如果编号%x==0:
返回错误
返回真值
数字=3
ans=2
而数字

若你们确定在给定数的平方根之前并没有一个数可以除以给定数,那个么你们可以把它标为素数。无需检查,直到
编号-1
。虽然只是一个小的改进,但在您的情况下可能会非常重要。

将循环运行到数字的平方根。这将降低复杂性。

对于范围(2,int(math.sqrt(number))+1)内的x,可以尝试
:thx到Pham Trung。关键词是“Erastothenes筛”,这是一个不小的改进!n与sqrt(n)相比,复杂度显著降低。
def is_prime(number):
  if number == 2:
    return True
  for x in range(2, int(math.sqrt(number)) + 1):
    if number%x == 0:
      return False
  return True