Python溢出错误

Python溢出错误,python,python-2.7,Python,Python 2.7,我使用的是Python2.7,出现以下错误。我怎样才能修好它 for y in range(1, x/2): 溢出错误:范围结果的项目太多 代码: 在Python2.x中,创建一个n-1项的列表 使用,除非你真的需要一次所有的项目 更新 根据xrange文档: CPython实现细节:xrange旨在实现简单和 快速的实现可能会施加限制以实现这一点。C Python的实现将所有参数限制为本机C long “short”Python整数,并且还要求 元素适合于本机C long。如果需要更大的范围

我使用的是Python2.7,出现以下错误。我怎样才能修好它

for y in range(1, x/2):
溢出错误:范围结果的项目太多

代码:

在Python2.x中,创建一个n-1项的列表

使用,除非你真的需要一次所有的项目

更新

根据xrange文档:

CPython实现细节:xrange旨在实现简单和 快速的实现可能会施加限制以实现这一点。C Python的实现将所有参数限制为本机C long “short”Python整数,并且还要求 元素适合于本机C long。如果需要更大的范围,则 可使用itertools模块编制备用版本:
islicecountstart、step、stop start+step-1+2*step尝试使用xrange代替range

在Python2.x中,range返回一个列表,该列表的容量受可用内存和64位Py的最大长度2^64-1的限制,因此可能会对大型数据集产生溢出错误


因此,规定的解决方案是使用xrange,它返回一个没有固定容量的生成器,也不受int或long数字的限制,用于索引。

range在Python2.x中返回一个列表,而不是迭代器。噢!这就是我的意思。嘘。谢谢。我试过了,但出现了以下错误。对于xrange2中的y,x/2:OverflowError:Python int太大,无法转换为Clong@user3139886您使用的是32位版本的python吗?如何确定它是什么版本?我尝试了这个,但出现了以下错误。对于xrange2中的y,x/2:overflowerrror:Python int太大,无法转换为C longI,我尝试了这个方法,但得到了以下错误。对于xrange2中的y,x/2:OverflowError:Python int太大,无法转换为C long
# Largest Prime Factor
prime = True
x = 600851475143
pNum = 0
for y in range(2, x/2):
    if (x % y == 0): # Found a factor
        for z in range(2, y/2): # Checking factor for prime
            if (y % z == 0): #
                prime = False
                break
        if (prime == True):
            pNum = y
        prime = True
print pNum
from itertools import islice, count

prime = True
x = 600851475143
pNum = 0
for y in islice(count(2), x/2-2):
    if (x % y == 0): # Found a factor
        for z in islice(count(2), y/2-2): # Checking factor for prime
            if (y % z == 0): #
                prime = False
                break
        if (prime == True):
            pNum = y
        prime = True
print pNum