虽然我试图使用下面附带的代码找到数字的最大素数因子,但我遇到了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的初学者。
答案 0 :(得分:1)
range()
在内存中创建一个列表,如果n
太大,则会引发错误。您应该使用xrange()
代替,这将创建一个惰性评估的生成器对象。