Python 嘿,有人能帮我找出解决Euler问题50(连续素数和)的代码有什么问题吗?它只适用于100以下的情况
我有一个问题,我的代码成功地生成了前100个素数,但之后就不起作用了。我真的不确定问题出在哪里 a=0 def isprimen: 素数=真 对于范围2内的i,整数**0.5+1: 如果n%i==0: 素数=假 打破 返回素数 def irpbx: javab=True 对于范围2中的i,intx**0.5+1: 如果x%i==0: javab=False 打破 返回javab 对于范围为2,1*10**6的d: 如有争议: 打印的d是,d a+=d 如果irpba: 如果a存在逻辑错误。 您要打印从1到N的所有素数之和。很好。 当然,如果N是10^6,那么从1到N的所有素数之和都大于10^6。 那么你的最后一个条件是:Python 嘿,有人能帮我找出解决Euler问题50(连续素数和)的代码有什么问题吗?它只适用于100以下的情况,python,optimization,Python,Optimization,我有一个问题,我的代码成功地生成了前100个素数,但之后就不起作用了。我真的不确定问题出在哪里 a=0 def isprimen: 素数=真 对于范围2内的i,整数**0.5+1: 如果n%i==0: 素数=假 打破 返回素数 def irpbx: javab=True 对于范围2中的i,intx**0.5+1: 如果x%i==0: javab=False 打破 返回javab 对于范围为2,1*10**6的d: 如有争议: 打印的d是,d a+=d 如果irpba: 如果a存在逻辑错误。 您要
if a<1*10**6:
print(a)
永远不会是真的
这里有一个解决方案:
a=0
N=10^6
def isprime(n):
prime=True
for i in range(2,int(n**0.5)+1):
if n%i==0:
prime=False
break
return prime
for d in range(2,N):
if isprime(d):
print("D is ",d)
a+=d
if(N<=10^6)
print(a)
你好,欢迎来到SO!请您澄清您的代码的哪一部分导致了问题以及这些问题是什么?谢谢你好,谢谢。它适用于100以下的素数,但idk为什么不适用于100万以下的素数&idk如何调试或找出我的错误:/@ArgonLinux尝试编辑您的问题以显示这一点。这会让人们更容易地帮助他们!你可以在这里看到如何用最少且可重复的例子提问好的问题:请把你得到的错误放在你的帖子里。
a=0
N=10^6
def isprime(n):
prime=True
for i in range(2,int(n**0.5)+1):
if n%i==0:
prime=False
break
return prime
for d in range(2,N):
if isprime(d):
print("D is ",d)
a+=d
if(N<=10^6)
print(a)
37550402023