如何使用range()在Python中迭代大数?

如何使用range()在Python中迭代大数?,python,loops,largenumber,Python,Loops,Largenumber,我想使用Python中的range()函数迭代一个大的数字,比如600851475143。但每当我运行程序时,它都会给我一个溢出错误。 我使用了以下代码- um = long(raw_input()) for j in range(1,num): .... 我已经试过很多次了,但都不起作用 如果索引是长数字,请使用itertools.islice(): 从itertools导入islice,计数 islice(count(start,step),(stop-start+step-1+2*)(s

我想使用Python中的range()函数迭代一个大的数字,比如600851475143。但每当我运行程序时,它都会给我一个溢出错误。 我使用了以下代码-

um = long(raw_input())
for j in range(1,num):
....
我已经试过很多次了,但都不起作用

如果索引是长数字,请使用
itertools.islice()

从itertools导入islice,计数

islice(count(start,step),(stop-start+step-1+2*)(step虽然
xrange
似乎达到了您想要的效果,但它无法处理那么大的数字。您可能需要从


CPython实现细节:xrange()旨在简单快速。实现可能会为此施加限制。Python的C实现将所有参数限制为本机C长(“短”Python整数),并且还要求元素的数量适合本机C long。如果需要更大的范围,可以使用itertools模块编制备用版本:
islice(count(start,step),(stop-start+step-1+2*(step不用于,在使用时使用

counter = long(1)
while counter < num:
    ...
计数器=长(1)
当计数器
您想如何处理这些数字?您几乎肯定想要
xrange
而不是range@Thomas这个数字对于
xrange
来说太大了。您可能想试试这个:[范围太大][1][1]:希望能有所帮助。注意:如果您认为解决方案涉及
range(1600851475143)
,您可能需要一个不同的解决方案。这将非常缓慢。啊,我正在使用64位Python,所以我没有注意到在Python 3中您可以使用range,在Python 2中,请按照建议使用xrange。然后您可以更正我的代码吗?
counter = long(1)
while counter < num:
    ...