幂取模算法
来源:互联网 发布:windows 安全中心服务 编辑:程序博客网 时间:2024/05/18 03:16
1. 普通的计算方式
先计算ab,再取模,这样很容易益处,在实际中基本不可行,因为幂次很大可能会超过计算机的数值范围。
2. 同余公式
设c是a除以m的余,即c=a-k*m,也可用同余表达式a≡c (mod m)表示,则可以证明:
2.1 同余性质1:
对任意整数b
ab≡bc (mod m)
证明:
c=a mod m <=> a = km +c
=>ab = k*b*m+bc => ab mod m = (k*b*m + bc)mod m = bc mod m
(1)式等价于:ab mod m =b* (a mod m) mod m,这非常适合递归计算。
2.2 同余性质2
a≡c (mod m) => a2≡c2 (mod m)--------------(2)
证明:
a=k*m+c =>a2=(km)2+2ckm+c2 =>a2 mod m =c2 mod m,即(2)成立
3.Montgomery算法
对任意的整数b都可表示为:
- n表示b的实际二进制位
- bi表示该位是0或1
- 因此,ab可表示为:
根据同余性质一
python代码
def mypow(a,n,m): result = 1 base = a while n > 0: if n & 1==1: result = (result*base) % m base = (base*base) %m n >>=1 return result
参考资料:http://blog.csdn.net/chen77716/article/details/7093600
0 0
- 幂取模算法
- 幂取模算法
- 幂取模算法
- 幂取模算法
- 快速幂取模算法模板
- 快速幂取模算法
- 快速幂取模算法实现
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法模板
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法【模板】
- 快速幂取模算法
- Android Wear SDK Preview到来,开发者可尝鲜
- HTML特殊字符编码大全
- android开发中资源文件的详细解读……后续翻译
- 3322动态域名,nat123动态域名解析,dnspod域名解析,等相关免费动态域名解析软件对比
- 各种字符串Hash函数比较
- 幂取模算法
- cmake的使用笔记
- java输入输出--I/O操作基础知识学习
- java开源微博系统weibo4j分享
- Best Time to Buy and Sell Stock
- CSS中设置图片的宽度和高度
- 图解JVM内存模型
- error:unresolved external symbol __imp__curl_easy_cleanup
- android 画图之setXfermode 处理两图相交叉的情况