Python素数和程序
我正在尝试使用python来解决ProjectEuler的问题 我遇到的问题是将所有低于200万的素数相加 我的代码: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
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