数论与代数中的关键定理及算法
1. 快速模幂运算
在数论和密码学中,快速计算模幂是一个常见且重要的问题。对于指数 (e),可以将其表示为二进制形式:
(e = 2^{k - 1}e_{k - 1} + 2^{k - 2}e_{k - 2} + \cdots + 2^1e_1 + 2^0e_0)(其中 (e_{k - 1} = 1))
进而得到 (x^e) 的计算方式:
(x^e = x^{(\cdots((2e_{k - 1} + e_{k - 2})\cdot 2 + e_{k - 3})\cdot 2 + \cdots + e_1)\cdot 2 + e_0} = (\cdots(((x^2 \cdot x^{e_{k - 2}})^2 \cdot x^{e_{k - 3}})^2 \cdot \cdots)^2 \cdot x^{e_1})^2 \cdot x^{e_0})
由此得到快速模幂运算的平方 - 乘法算法:
Algorithm A.27.
int ModPower(int x, n, bitString e_{k - 1} \cdots e_0)
1. y ← x;
2. for i ← k - 2 downto 0 do
3. y ← y^2 \cdot x^{e_i} mod n
4. return y
命题 A.28 表明,设 (l = \lfloor\log_2 e\rfloor),计算 (x^e \bmod n) 可以通过 (l) 次平方运算、(l) 次乘法运算和 (l) 次除法运算完成。
超级会员免费看
订阅专栏 解锁全文
569

被折叠的 条评论
为什么被折叠?



