Skip to main content
 首页 » 编程设计

CPU 和墙时间中的 Python 内存错误

2025年05月04日10lyhabc

我正在尝试做一个函数来计算三个变量的模指数并在以下情况下比较 CPU 和挂钟时间:

e=2^n and e=2^n-1 

这是我的代码:

from random import choice 
import random 
def question_3(m,n): 
    list = [] 
    for i in range(2,2**m): 
        flag=True 
        for num in list: 
            if(i%num==0): 
                flag=False 
        if(flag): 
            list.append(i) 
            p = choice(list) 
            a = randint(1,int(p)-1)  
            e = pow(2,n) 
    return pow(a,e,p) 
time t = question_3(150,100) 

但是当我输入大数字的 m 和 n 时,它会给我:

range() result has too many items 

请您参考如下方法:

那是因为您强制 range 生成了太多数据。例如,range(2, 2*1234567891011)会生成一个长度为2*1234567891011-2的列表,是不是有点多了?

尝试使用 xrange(),它会在需要时生成数据,而不是在您调用它时生成所有数据。

改成这样:

for i in xrange(2,2**m): 

看似简单,实则大不同。希望这对您有所帮助!