gpt4 book ai didi

c - Wolfram Alpha 的指数怎么能这么快?

转载 作者:太空狗 更新时间:2023-10-29 16:47:40 25 4
gpt4 key购买 nike

我想知道 RSA 算法如何处理如此大的数字和 tried one example in WolframAlpha 。他们如何处理如此疯狂的数字?

编辑:只是为了让它更奇怪,one more example

最佳答案

有一个简单的算法叫做 exponentiation by squaring 可用于非常有效地计算 ab mod c。这是基于观察

a2k mod c = (ak)2 mod c

a2k + 1 mod c = a · (ak)2 mod c

鉴于此,您可以使用这种递归方法计算 ab mod c:

function raiseModPower(a, b, c):
if b == 0 return 1
let d = raiseModPower(a, floor(b/2), c)
if b mod 2 = 1:
return d * d * a mod c
else
return d * d mod c

这只进行 O(log b) 次乘法运算,每次乘法运算的位数不能超过 O(log c) 次,所以速度非常快。这也是 RSA 实现将事物提升为幂的方式。如果您愿意,可以将其重写为迭代式,不过我认为递归表示非常简洁。

一旦你有了这个算法,你就可以使用标准技术来乘以任意精度的数字来进行计算。由于只需要 O(log b) 次乘法迭代(相对于 b 次迭代),速度快得离谱。你永远不会真正结束计算 ab 然后用 c 修改它,这也使数字的数量保持较少并使其更快。

希望这对您有所帮助!

关于c - Wolfram Alpha 的指数怎么能这么快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19351818/

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