Python 2.7 for循环中的溢出错误

Python 2.7 for循环中的溢出错误,python-2.7,for-loop,Python 2.7,For Loop,我正在使用Python处理ProjectEuler的问题,但我似乎无法解决这个问题,而不会遇到以下错误:“OverflowerError:range()结果包含太多项” 我想知道是否有办法增加允许的范围?我的代码如下所示: target = 600851475143 largest_prime_factor = 1 #find largest prime factor of target for possible_factor in range(2,(target/2)+1): if

我正在使用Python处理ProjectEuler的问题,但我似乎无法解决这个问题,而不会遇到以下错误:“OverflowerError:range()结果包含太多项”

我想知道是否有办法增加允许的范围?我的代码如下所示:

target = 600851475143
largest_prime_factor = 1

#find largest prime factor of target
for possible_factor in range(2,(target/2)+1):
    if target % possible_factor == 0:
        is_prime = True
        for i in range(2,(possible_factor/2)+1):
            if possible_factor % i == 0:
                is_prime = False
                break
        if is_prime:
            largest_prime_factor = possible_factor

print largest_prime_factor
如果您在尝试解决难题时遇到计算机或语言的限制,或者时间太长,则表明可能存在更好的方法(阅读:算法)来解决问题。在您的情况下,您不需要循环到
目标/2+1
(尽管这是一个受过良好教育的上限)。您只需要到达
ceil(sqrt(target))


另外,作为旁注,您可以通过使用来克服这个限制,它将创建一个生成器,而不是为Python 2创建一个列表的
range
。在Python3中,默认情况下,
range
将返回一个而不是
列表


感谢您在评论中的澄清。

最后一句的拼写错误。它应该是
range
,而不是
xrange
。另外,在Python3中,
range
是一个函数,而不是返回生成器的函数。