怎么计算大整数的平方并取余数?

2018 年 8 月 4 日
 usdc

最近在看 RSA,但是发现大数计算平方再取余结果不对,位数超出了。

用什么算比较好?

比如说 2790^2753 % 3233

阮一峰大大的这个例子

3071 次点击
所在节点    程序员
10 条回复
luob
2018 年 8 月 4 日
快速幂取余?
hguandl
2018 年 8 月 4 日
快速幂了解一下,二分即可。a^b % p = a ^ (b/2) % p * a ^ (b/2) % p % p
ihainan
2018 年 8 月 4 日
快速幂的话可以分治算,比如: https://leetcode.com/problems/powx-n/description/

以及:A * B % MOD = (A % MOD) * (B % MOD) % MOD
AlisaDestiny
2018 年 8 月 4 日
```c
int f(int a, int n, int b) {
int rs = 1;
while(n > 0) {
if(n & 1) rs = rs * a % b;
a = a * a % b;
n >>= 1;
}
return rs;
}
```
a 的 n 次方对 b 取余。
AlisaDestiny
2018 年 8 月 4 日
pipapa
2018 年 8 月 4 日
快速幂取模正解
usdc
2018 年 8 月 4 日
65^17 ≡ 2790 (mod 3233)
@AlisaDestiny 这个怎么算的不对
usdc
2018 年 8 月 4 日
@AlisaDestiny 算对了 我打错了。。。。
saluton
2018 年 8 月 4 日
质数的时候,费马小定理搞一下
atx
2018 年 8 月 6 日
>>> (2790**2753)% 3233
65L

python 支持大整数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/476844

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX