[英]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.