同余运算及其基本性质
2016-11-15 19:43
429 查看
100除以7的余数是2,意思就是说把100个东西七个七个分成一组的话最后还剩2个。余数有一个严格的定义:假如 如果两个数a和b之差能被m整除,那么我们就说a和b对模数m同余(关于m同余)。比如,100-60除以8正好除尽,a≡b(mod m)。比如,刚才的例子可以写成100≡60(mod 8)。你会发现这种记号到处都在用,比如和数论相关的书中 就经常把a mod 3 = 1写作a≡1(mod 3)(一个数永远和自己同余)、对称性(a和b同余,b和a也就同余)和传递性(a和b同余,b和c同余可以推出a和c同余)。这三个性质都是显然的。 同余运算里还有稍微复杂一些的性质。比如,同余运算和整数加减法一样满足“等量加等量,其和不变”。小学我们就知道,等式两边可以同时加上一个相等的数。例如,a=b可以推出a+100=b+100。这样的性质在同余运算中也有:对于同一个模数m,如果a和b同余,x和y同余,那么a+x和b+y也同余。在我看来,这个结论几乎是显然的。当然,我们也可以严格证明这个定理。这个定理对减法同样有效。 性质:如果$a≡b(mod m),x≡y(mod m)$,则a+x≡b+y(mod m)。 证明:条件告诉我们,可以找到p和q使得a-mp = b-mq,也存在r和s使得x-mr = y-ms。于是a-mp + x-mr = b-mq + y-ms,即a+x-m(p+r) = b+y-m(q+s),这就告诉我们a+x和b+y除以m的余数相同。 容易想到,两个同余式对应相乘,同余式两边仍然相等: 如果a≡b(mod m),x≡y(mod m),则ax≡by(mod m)。 证明:条件告诉我们,a-mp = b-mq,x-mr = y-ms。于是(a-mp)(x-mr) = (b-mq)(y-ms),等式两边分别展开后必然是ax-m(…) = by-m(…)的形式,这就说明ax≡by(mod m)。 现在你知道为什么有的题要叫你“输出答案mod xxxxx的结果”了吧,那是为了避免高精度运算,因为这里的结论告诉我们在运算过程中边算边mod和算完后再mod的结果一样。假如a是一个很大的数,令b=a mod m,那么(a * 100) mod m和(b * 100) mod m的结果是完全一样的,这相当于是在a≡b (mod m)的两边同时乘以100。这些结论其实都很显然,因为同余运算只关心余数(不关心“整的部分”),完全可以每一次运算后都只保留余数。因此,整个运算过程中参与运算的数都不超过m,避免了高精度的出现。 在证明Fermat小定理时,我们用到了这样一个定理: 如果ac≡bc(mod m),且c和m互质,则a≡b(mod m) (就是说同余式两边可以同时除以一个和模数互质的数)。 证明:条件告诉我们,ac-mp = bc-mq,移项可得ac-bc = mp-mq,也就是说(a-b)c = m(p-q)。这表明,(a-b)c里需要含有因子m,但c和m互质,因此只有可能是a-b被m整除,也即a≡b(mod m)。 可能以后还要用到更多的定理,到时候在这里更新。
转自:http://www.matrix67.com/blog/archives/236
相关文章推荐
- 同余运算及其基本性质
- 同余运算及其基本性质(证明)
- 同余运算及其基本性质
- 同余运算及其基本性质
- 同余运算及其基本性质
- 同余运算及其基本性质【Matrix67】
- 栈的链式存储及其基本运算
- 数据结构笔记(一)线性表的顺序表示和基本操作及其顺序表实现的集合运算(A-B)U(B-A)实例
- python语言基础之基本数据类型及其运算(2)
- 7.1 树的基本概念、性质与运算
- 栈的链式存储结构及其基本运算实现
- 散列表的基本概念及其运算
- 队列——链式存储结构及其基本运算(链队列的另一种表达方式)
- 模运算的基本性质
- 栈的链式存储结构及其基本运算的实现
- 栈的链式存储及其基本运算
- 数据结构(严蔚敏、吴伟民)——读书笔记-2、 线性表及其基本运算、顺序存储结构
- 队列——顺序存储结构及其基本运算(非循环队列)
- matlab矩阵及其基本运算—特征值分解和奇异值分解
- matlab矩阵及其基本运算—特征值分解和奇异值分解