这个问题很简单但是这一次,我需要使用三种不同的方法而不是一种方法。它们是:isPrime,getPrimes,sumPrimes。
这是我原来的:
import sys
print("")
def is_prime(n):
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
prime_sum = 0
for i in range(2, 10): #change 10 back to 2000000
if is_prime(i):
prime_sum += i
print ("Sum of all the primes below 10 = ", prime_sum)
我的问题是如何从prime_sum = 0开始上述语句才能在sumPrimes之类的其他语句中工作?我试过这样做:
def sum_primes():
prime_sum = 0
for i in range(2, 10): #change 10 back to 2000000
if is_prime(i):
prime_sum += i
#print ("Sum of all the primes below 2,000,000 = ", prime_sum)
print ("Sum of all the primes below 10 = ", prime_sum)
return sum_primes()
然而它不起作用。我是Python的新手,所以我很感激一些反馈。感谢。
答案 0 :(得分:0)
您因为没有基本情况递归调用 sum_primes 而导致堆栈爆炸。这是无限递归。正如M.法布尔已经指出的那样,你必须归还你的累积金额,而不是重复出现。此外,您的缩进是错误的。试试这个:
142913828922
此外,正如您将要发现的那样,通过单独检查和详尽划分生成所有这些素数是一个非常缓慢的过程。查看如何在Python中生成素数;在点击的第一页上将有完整的解决方案。即使是概率方法也可以完美地运行200万,而且 fast 。
我现在有一个解决方案总和
ScrollView:
MyGrid:
size_hint_y: self.rows / 10.0 + 1.0 #you should play with this a bit ...