2015-05-29 140 views
0

當我試圖找到連接使用下面的代碼數字的最大素因子,我遇到OverflowError: Python int too large to covert to C long溢出錯誤:範圍()

def prime_factors(n): 
    i = 2 
    if prime(n)==1: 
     return n 
    while n>0 and i<n: 
     if n % i ==0: 
      n = n/i 
      div = i 
      prime_factors(n) 
     else: 
      i+=1 

return div 

def prime(n): 
    for i in xrange(2,n): 
     if n%i ==0: 
      return 0 
    return 1 

num = int(raw_input()) 
print prime_factors(num) 

任何人都可以請幫助尋找一個解決的辦法?

P.S:我是Python的初學者。

回答

1

range()在內存中創建一個列表,如果n太大會產生一個錯誤。您應該使用xrange(),這將創建一個懶惰評估的生成器對象。

+1

我嘗試使用'xrange()',但仍然出現錯誤。 –