2016-10-02 4 views
-2

루프의 사용없이 숫자의 모든 소수 요소의 합을 산출하려고합니다. 2보다 큰 prime_factor (m, K)의 결과가, 때 (n)이 주요 요인 = prime_factor (m, K) 후로 이동 그러나 경우, 요인은 없음파이썬은 루프없이 프라임 요소의 합을 찾습니다.

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)를 할 수 있도록 당신은 당신의 값을 조정할 수 있습니다 : 당신이 그것을 반환해야합니다.

관련 문제