[英]Sum of Prime using Recursion in Python
給出的問題是確定兩個數 m 和 n 是否為素數,如果是,則給出從 m 到 n 的所有素數之和。 我已經為第一部分制作了代碼:
def isPrime(n, i):
if n <= i:
return True if (n == 2) else False
if n % i == 0:
return False
if i * i > n:
return True
return isPrime(n, i + 1)
但是,我不知道如何執行代碼的第二部分。 我們教授給我們的一個線索是在代碼的第二部分調用第一個function,如下所示:
def sumOfPrime(m, n):
**enter code here**
isPrime(m, 2)
isPrime(n, 2)
我不知道如何知道從 m 到 n 的所有素數。 此外,我們只允許對這個問題使用遞歸。
我假設您的教授希望您僅測試m
和n
之間的所有數字的素數,然后將通過的數字相加。
def sumOfPrime(m, n):
if isPrime(m, 2) and isPrime(n, 2):
return sum(i for i in range(m, n + 1) if isPrime(i, 2))
這是一個完全遞歸的版本:
def sumOfPrime(m,n):
if isPrime(n,2) and isPrime(m,2):
return sumOfPrimes(m,n)
def sumOfPrimes(m, n):
if m > n:
return 0
return (m if isPrime(m,2) else 0) + sumOfPrimes(m+1,n)
如果只有一個 function,最好用一個嵌套 function:
def sumOfPrime(m,n):
def helper(m,n):
if m > n:
return 0
return (m if isPrime(m,2) else 0) + sumOfPrimes(m+1,n)
if isPrime(n,2) and isPrime(m,2):
return helper(m,n)
assert sumOfPrime(2,5) == 2 +3 + 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.