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

Soh*_*jee 5 python loops largenumber

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

um = long(raw_input())
for j in range(1,num):
....
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多次但它不起作用!

Mar*_*ers 5

itertools.islice()如果您的指数是长数,请使用:

from itertools import islice, count
islice(count(start, step), (stop-start+step-1+2*(step<0))//step)
Run Code Online (Sandbox Code Playgroud)

Python 3 range()也可以处理python longs.

简化为您的情况:

for j in islice(count(1), num - 1):
Run Code Online (Sandbox Code Playgroud)


jam*_*lak 2

虽然xrange似乎达到了你想要的效果,但它无法处理那么大的数字。您可能需要使用这里的这个食谱

\n\n
\n

CPython 实现细节:xrange() 旨在简单且快速。实现可能会施加限制来实现这一点。Python 的 C 实现将所有参数限制为本机 C 长整型(\xe2\x80\x9cshort\xe2\x80\x9d Python 整数),并且还要求元素数量适合本机 C 长整型。如果需要更大的范围,可以使用 itertools 模块制作替代版本:islice(count(start, step), (stop-start+step-1+2*(step<0))//step)

\n
\n