我正在尝试做一个函数来计算三个变量的模指数并在以下情况下比较 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):
看似简单,实则大不同。希望这对您有所帮助!
