Python找到没有循环的素因子的总和

时间:2016-10-02 04:41:14

标签: python recursion sieve-of-eratosthenes prime-factoring

我试图在不使用循环的情况下产生数字的所有素因子的总和。但是如果prime_factor(m,k)的结果大于2,当在factor = prime_factor(m,k)之后转到main(n)时,因子将为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)

1 个答案:

答案 0 :(得分:0)

您的public class Foo { public int Val { get; set; } } 函数没有对递归调用的结果做任何事情。你需要退货:

public class Bar 
{
     public Foo Reference { get; set; }
}

同样是次要的优化,但你可以调整你的值,所以从3开始,在递归调用中执行prime_factor(m,k + 2)而不是k + 1.