我想在 Python 中執行以下計算:
h^r * m mod p
此計算中的所有變數都是非常大的數字。如果數字不是那么大,這個公式會起作用:
c2 = (pow(pk,r) * m) % p
但是因為數字太大,這讓我的機器掛了。所以自然的解決方案是包含pow函式的第三個引數以在該計算中包含模數。這計算得非常快:
pow(pk,r,p)
pk^r^ 但是,m在考慮模數之前,我如何調整上面的公式來乘以乘以的結果?
uj5u.com熱心網友回復:
您可以使用以下演算法,當指數為奇數時,您將底數乘以自身。
然后你知道它是偶數,你可以將它除以 2,然后將基數乘以它自己。
您這樣做是因為它將計算次數除以 2。
下面的例子:
base = 4
exp = 12
mod = 7
m = 8
result = 1
while exp>0:
if exp%2==0:
result = (result*base)%mod
base = (base*base)%mod
print((m*result)%mod)
或者你可以使用 pow 函式中的第三個引數像這樣: (pow(base, exp, mod)*m)%mod
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/419902.html
標籤:
上一篇:Pandasffill()具有缺失值之前和缺失值之后的平均值
下一篇:生成10位密碼
