我正在嘗試做一個函數來計算模塊指數MODEXP(a,e,p)
。Python函數掛起大數
這個函數m
和n
作爲參數,其中p
最多2^m
和e
是2^n
和a
質數比p
少的隨機數。
這裏是我的代碼:
import random
def question_3(m,n):
list = []
i = 1
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)
question_3(5,5)
對於m
和n
20,代碼開始掛起。我如何防止這種情況發生?
您有一個需要運行超過一百萬次的for循環。你想要多快? – geoffspear
我希望當輸入例如m和n等於500它會工作,我也希望它只需要幾個毫秒 –
那麼,你需要提出一個算法,不涉及建立一個2^500列表整數,然後迭代它來做到這一點。 – geoffspear