问题引入
计算 a b m o d p a^b\mod p abmodp,其中 a , b , p a,b,p a,b,p均为正整数
- 看一下这个问题,也许你想使用快速幂来计算,但是如果现在 a ≥ 1 0 18 , b ≥ 1 0 18 a\geq 10^{18},b\geq 10^{18} a≥1018,b≥1018,快速幂显然会溢出
- 换一个范围,如果现在 b ≥ 1 0 200000000000 b\geq 10^{200000000000} b≥10200000000000,一个极大的数,那我们势必要先对 b b b取模,但是现在 b b b是处于指数的位置,直接取模肯定是错的,所以我们引入欧拉降幂的方法
欧拉降幂
- 首先确保已经会了欧拉函数,接下来直接给出欧拉定理和扩展欧拉定理
欧拉定理
- 设 a , n a,n a,n均为正整数,且 a , n a,n a,n互质, φ ( n ) \varphi(n) φ(n)表示 n n n的欧拉函数,则 a φ ( n ) ≡ 1 ( m o d n ) a^{\varphi(n)}\equiv1\pmod n aφ(n)≡1(modn)费马小定理是欧拉定理的一个特殊情况,因为它规定了 n n n必须是质数
- 推论 a b = a ⌊ b φ ( n ) ⌋ × φ ( n ) + b m o d φ ( n ) ≡ 1 × a b m o d φ ( n ) ( m o d n ) a^{b}=a^{\lfloor\frac{b}{\varphi(n)}\rfloor\times\varphi(n)+b \mod \varphi(n)}\equiv1\times\ a^{b\mod \varphi(n)}\pmod n ab=a⌊φ(n)b⌋×φ(n)+bmodφ(n)≡1× a

本文介绍了如何通过欧拉降幂技巧解决大数模幂问题,包括欧拉定理和扩展欧拉定理的应用,以及在实际编程中的两个示例。适合处理超出常规算法溢出范围的大数计算。
最低0.47元/天 解锁文章
3132

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



