WolframAlpha如何如此快地取数字?

前端之家收集整理的这篇文章主要介绍了WolframAlpha如何如此快地取数字?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道RSA算法如何处理这么大的数字和 tried one example in WolframAlpha.他们如何处理这样的疯狂数字?

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

解决方法

有一个简单的算法叫做 exponentiation by squaring,可以非常有效的计算ab modc.这是基于这样的观察

a2k mod c = (ak)2 mod c

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

鉴于此,您可以使用递归方法计算ab modc:

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&C++相关文章