2

我正在尝试做一个函数来计算三个变量的模指数,并在以下情况下比较 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
4

1 回答 1

1

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

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

将其更改为:

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

看似简单,其实差别很大。希望这可以帮助!

于 2013-11-03T12:56:30.083 回答