Python溢出错误
我使用的是Python2.7,出现以下错误。我怎样才能修好它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。如果需要更大的范围
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