2015-05-29 42 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()',但仍然出现错误。 –