繁体   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