2016-10-02 10 views
-2

私はループを使わずに数値のすべての素因数の和を求めようとしています。 2より大きいprime_factor(M、K)の結果は、とき(n)が主な要因= prime_factor(M、K)の後に行くただし場合、要因はなしPythonはループなしで素因数の和を求めます

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) 
+0

再帰呼び出しを返します。 – Li357

答えて

0

あなた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から開始して、あなたの値を調整し、代わりにK + 1の再帰呼び出しにprime_factor(M、K + 2)を行うことができます:あなたはそれを返す必要があります。

関連する問題