gpt4 book ai didi

python - 如何计算 2 的一个大数对另一个大数的幂?

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:01 27 4
gpt4 key购买 nike

M = 115792089237316195423570985008687907853269984665640564039457584007908834671663

296514807760119017459957299373576180339312098253841362800539826362414936958669 % M = ?

可以用Python计算这个吗?或者还有其他方法吗?

最佳答案

为了计算结果,三参数 pow 可以有效地完成此操作,正如 @MarkDickinson 在评论中提到的。

对其工作原理的简化解释:

  • 要计算2**N mod M,首先找到K = 2**(N//2) mod M
  • 如果 N 为偶数,2**N mod M = K * K mod M
  • 如果 N 为奇数,2**N mod M = K * K * 2 mod M这样,就不需要计算巨大的数字。实际上,pow 使用了更多技巧,更通用,并且不需要递归。

这里是一些演示代码:

def pow_mod(B, E, M):
if E == 0:
return 1
elif E == 1:
return B % M
else:
root = pow_mod(B, E // 2, M)
if E % 2 == 0:
return (root * root) % M
else:
return (root * root * B) % M

M = 115792089237316195423570985008687907853269984665640564039457584007908834671663
E = 96514807760119017459957299373576180339312098253841362800539826362414936958669

print(pow_mod(2, E, M))
print(pow(2, E, M))

关于python - 如何计算 2 的一个大数对另一个大数的幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59234775/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com