问题是 2 在整数模式环 (6) 处不可逆。我想将结果分成 2 作为普通整数。换句话说,我喜欢摆脱整数模式环的陷阱,将结果带到普通整数,然后将其除以 2。
def fast_exponentiation(c, L, q):
Zq = IntegerModRing(q) # create Z_q
g2 = c
result = 1
while True:
y = L % 2
result = Zq(result) * Zq(g2 ** y)
g2 = Zq(g2 * g2)
L = L >> 1
if L == 0:
break
return result
e = fast_exponentiation(2, 4, 6)
print e / 2