首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Modulus计算大幂

使用Modulus计算大幂
EN

Stack Overflow用户
提问于 2013-04-25 08:46:59
回答 1查看 2.4K关注 0票数 1

我目前正在处理一些事情,因此我需要计算如下内容的值

(65^17) mod 3233 =*

上面问题的答案是2790,但是因为65^17大于Math.pow可以返回的值,所以总是给出错误的答案。

我已经使用BigIntegers (和内置的modPow)编写了一个实现,但如果可能的话,我想尽量避免它们。

有没有其他方法可以避免使用BigIntegers?

EN

回答 1

Stack Overflow用户

发布于 2013-04-25 08:50:15

如果为x = y (mod n)u = v (mod n),则为x.u = y.v (mod n) (其中‘’表示乘法)

重复应用此方法可减少65^17 mod 3233,

例如:

代码语言:javascript
复制
65 * 65 (mod 3233) = 992

65 * 992 (mod 3233) = 3053

3053 * 65 (mod 3233) = 1232
.
.
.

实际上,我们可以缩短这个时间,因为我们已经计算出了65^4 (mod 3233) = 1232

所以,

代码语言:javascript
复制
65^8 (mod 3233) = 1232 * 1232 (mod 3233) = 1547

65^16 (mod 3233) = 1547 * 1547 = 789

最后,

代码语言:javascript
复制
65^17 = 789 * 65 (mod 3233) =  2790
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16204639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档