我試圖使該測試命令time
Python中的功能。該函數應該採取m,n
作爲參數,並計算MODEXP(a,e,p)
其中p是素數發生器至多2^m
和e在第一種情況是2^n
和在第二種情況下是2^(n-1)
並且a是隨機的正整數小於p。爲什麼我的函數在輸入值magnatude中限制Python時間?
這裏是我的代碼:
import random
def question_3(m,n):
list = []
for i in xrange(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(5,5) #non-Python syntax.
的問題是,與m
和n
此功能着的工作比20
對他們倆的更大,我不知道爲什麼。
這是您的實際代碼?我不認爲'time t = question_3(5,5)'是有效的Python語法。 – Kevin
實際上我是用鼠尾草做的,它是有效的 –
你的代碼不工作的方式是什麼?你得到一個錯誤還是它似乎掛起?如果for循環運行超過一百萬次(2 m,m => 20),代碼可能會掛起並不令人感到意外。同樣,一旦你打到m〜30,你的列表將開始達到最大可能的大小(如果你在一臺32位機器上)。 – JonathanV