我想使用 Python 中的 range() 函数迭代一个大数字,例如 600851475143。但是每当我运行程序时,它都会给我一个溢出错误。我使用了以下代码 -
um = long(raw_input())
for j in range(1,num):
....
我已经尝试了很多次,但它不起作用!
我想使用 Python 中的 range() 函数迭代一个大数字,例如 600851475143。但是每当我运行程序时,它都会给我一个溢出错误。我使用了以下代码 -
um = long(raw_input())
for j in range(1,num):
....
我已经尝试了很多次,但它不起作用!
itertools.islice()
如果您的索引是长数字,请使用:
from itertools import islice, count
islice(count(start, step), (stop-start+step-1+2*(step<0))//step)
Python 3range()
也可以处理 python longs。
简化为您的情况:
for j in islice(count(1), num - 1):
尽管xrange
似乎达到了您想要的效果,但它无法处理那么大的数字。你可能需要从这里使用这个食谱
CPython 实现细节: xrange() 旨在简单快速。实现可能会施加限制来实现这一点。Python 的 C 实现将所有参数限制为原生 C long(“短”Python 整数),并且还要求元素的数量适合原生 C long。如果需要更大的范围,可以使用 itertools 模块制作替代版本:
islice(count(start, step), (stop-start+step-1+2*(step<0))//step)
.
不用于,使用 while
counter = long(1)
while counter < num:
...