数论之同余
2016-06-04 09:02
417 查看
基本性质
后面两个贼有用a≡b(modm)⟺a=k∗m+b
a≡b(modm)∧c≡d(modm)⟹a+c≡b+d(modm)∧a∗c≡b∗d(modm)
(a+b)modm=((amodm)+(bmodm))modm
a∗bmodm=((amodm)∗(bmodm))modm
一些题目的分析与证明
大整数的求余与二进制字符串模3余数证明(直接证明通用x进制的字符串对整数m求余)
假设字符串为A1A2A3...An
则S=A1∗xn−1+A2∗xn−2+...+An为字符串代表的十进制值
Smodm=(A1∗xn−1+A2∗xn−2+...+An)modm
=((A1∗xn−1+A2∗xn−2)modm+(A3∗xn−3...+An)modm)modm
=((A1∗x+A2)∗xn−2modm+(...)modm)modm
=(((A1∗x+A2)modm)∗(xn−2modm)modm+(...)modm)modm
令temp=(A1∗x+A2)modm
=((temp∗(xn−2modm))modm+(...)modm)modm
=(((tempmodm)∗(xn−2modm))modm+(...)modm)modm
=((temp∗xn−2)modm+(...)modm)modm
=(temp∗xn−2+A3∗nn−3+...+An)modm
由此我们可以看到递推公式temp=(temp∗x+Anext)modm
二进制字符串模3余数,同上
同余幂,求bnmodm,b和m都较大
将n表示成二进制串A1A2…An,则bn=b2A1∗(n−1)+...
用mod的乘法性质和大整数除法类似的证明方法可以得出递推公式
t=(t∗power)modm
power=b2Ai∗(n−i)modm即第i项对m的余数,可以通过幂次递增的递推求得
同余的其他一些应用
哈希生成伪随机数(比如线性同余xn=(xn−1∗k+c)modm)
加密
相关文章推荐
- 1.m分解阶乘之和
- 2.几种递推数
- 3.欧拉函数
- 4.快速幂模m算法
- 5.扩展欧几里得&&中国剩余定理
- 6.数论_web
- Project Euler Problem 387 - Harshad Numbers - 深度优先
- 编程之美2015初赛A
- 数论题集
- 原根
- 阶与原根学习笔记
- HDU 1299 Diophantus of Alexandria
- Leftmost Digit(HDU 1060)
- Rightmost Digit(HDU 1061)
- Python-在奇数中寻找素数
- ZOJ 2674 Strange Limit 欧拉定理
- LeetCode-Palindrome Number
- 组合数求模总结
- Sicily 1047 Super Snooker
- 【数论】组合数求模