簡體   English   中英

在 Python 中使用遞歸的素數總和

[英]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 的所有素數。 此外,我們只允許對這個問題使用遞歸。

我假設您的教授希望您僅測試mn之間的所有數字的素數,然后將通過的數字相加。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM