溢出错误:range()

时间:2015-05-29 13:43:08

标签: python python-2.7

虽然我试图使用下面附带的代码找到数字的最大素数因子,但我遇到了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 个答案:

答案 0 :(得分:1)

range()在内存中创建一个列表,如果n太大,则会引发错误。您应该使用xrange()代替,这将创建一个惰性评估的生成器对象。