为什么程序会给出MemoryError?语言:Python的

时间:2016-12-13 14:07:03

标签: python-2.7

我的程序是找到任意两个给定数字(包括两者)之间的完美平方数

# Enter your code here. Read input from STDIN. Print output to STDOUT
import math
t=int(raw_input())
for i in range(0,t):
    count=0
    s,e=raw_input().strip().split(' ')
    s,e=[int(s),int(e)]
    for j in range(s,e+1):
        if math.sqrt(j)==math.floor(math.sqrt(j)):
            count+=1
    print count

输入例如:

  

3

     

59 999999922

     

9 999999966

     

12 999999988

弹出的错误是:

  

Traceback(最近一次调用最后一次):文件“solution.py”,第8行,in          对于范围内的j(s,e + 1):MemoryError

为什么会出现此错误?我该如何解决? 对不起,我是这个stackoverflow的新手。

1 个答案:

答案 0 :(得分:0)

range() 在内存中创建一个列表,如果t的值变得足够大,那么你就是在运行我们的内存。使用延迟评估replace range() with xrange()