簡體   English   中英

Python在沒有循環的情況下找到素因數的總和

[英]Python find sum of prime factors without loop

我試圖在不使用循環的情況下產生一個數字的所有質因數的總和。 但是,如果 prime_factor(m, k) 的結果大於 2,則在 factor=prime_factor(m, k) 后轉到 main(n) 時,factor 將為 None

def prime_factor(m, k):
    if m%k==0:
        return k 
    else:
        prime_factor(m, k+1)

def main(n):
    if n<2:
        return 0
    if n==2:
        return n
    else:
        factor=prime_factor(n, 2)
        return factor+main(n//factor)

您的prime_factor函數對遞歸調用的結果沒有做任何事情。 您需要返回它:

def prime_factor(m, k):
    if m%k==0:
        return k 
    else:
        return prime_factor(m, k+1)         # need the return here

也是次要的優化,但您可以調整您的值,以便從 3 開始並在遞歸調用中執行 prime_factor(m, k+2) 而不是 k+1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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