“和的余等于余的和”这个结论可能是错误的。
简单举个例子,5除3(余数是2)和4除3(余数是1),(5+4)除3余数是多少呢?余数是0(能被整除)。
“积的取余等于每个数取余的乘积”这个结论也可能是错误的。
第二个例子,5除3(余数是2)和2除3(2除3商0,余数是2),(5*2)除3余数是多少呢?余数是1。
“和的余等于余的和”以及“积的取余等于每个数取余的乘积”这两个结论都不是普适结论,就是在一定的条件下是不正确的。我这个回答采用的是反证法
运算 | 公式 |
---|---|
结合律 | ((a+b) mod p + c)mod p = (a + (b+c) mod p) mod p ((ab) mod p * c)mod p = (a * (bc) mod p) mod p |
交换律 | (a + b) mod p = (b+a) mod p (a × b) mod p = (b × a) mod p |
分配律 | ((a +b)mod p × c) mod p = ((a × c) mod p + (b × c) mod p) mod p (a×b) mod c=(a mod c * b mod c) mod c (a+b) mod c=(a mod c+ b mod c) mod c (a-b) mod c=(a mod c- b mod c) mod c |
(a+b) mod c=(a mod c+ b mod c) mod c
正确的证明方法:就是不妨设
a = k1c + r1 (其中r1=a mod c)
b = k2c + r2 (其中r2=b mod c)
a+b = (k1 + k2) c+ (r1 + r2)
如果(r1 + r2) >= c ,则
(a+b) mod c = (r1 + r2) -c
否则
(a+b) mod c = (r1 + r2)
综上:(a+b) mod c=(a mod c+ b mod c) mod c
(a×b) mod c=(a mod c * b mod c) mod c
不妨设
a = k1c + r1 (其中余数r1=a mod c)
b = k2c + r2 (其中余数r2=b mod c)
a×b = (k1c + r1) * (k2c + r2)=k1k2(c^2)+k1r2c+k2r1c+r1r2
(a×b) mod c = { [ k1*k2*(c^2) ]
mod c + [ k1*r2*c ]
mod c+[ k2*r1*c ]
mod c+[ r1*r2 ]
mod c } mod c=[(r1r2)mod c ] mod c = (r1r2)mod c
这里有两个结论:
(a×b中的因式k1k2*(c^2)、k1r2c、k2r1c含有c,就是c倍数,mod c则一定被整除,所以余数为0。)
(a mod x) modx =a mod x,因为a mod x的结果是比x的绝对值小的,再次mod就是它本身。
综上:(a×b) mod c=(a mod c * b mod c) mod c