模运算


模运算,就是取余数,在计算机语言中%来表示。举个简单例子,3%5=3。结果的取值在0与模之间,例如res=X mod Y,那么res的取值范围应该是[0,Y-1]。结果也可以用负数来表示,3%5=-2。一般用正数的表现形式,如果出现负数,我们也该知道是怎么来的。

运算规律

模运算中同样有一些数学公式大家需要记住,基本跟四则运算比较相似。乘法大家需要注意下。

(A+B)%M=(A%M+B%M)%M(A+B)\%M = (A\%M+B\%M)\%M

(AB)%M=(A%MB%M)%M(A-B)\%M=(A\%M-B\%M)\%M

(AB)%M=[(A%M)(B%M)]%M(A*B)\%M=[(A\%M)*(B\%M)]\%M

(An)%M=[(A%M)n]%M(A^n)\%M=[(A\%M)^n]\%M

同样,模运算也满足结合律,分配律,交换律:

((A+B)%M+C)%M==(A+(B+C)%M)%M((A+B)\%M+C)\%M==(A+(B+C)\%M)\%M

((AB)%MC)%M==(A(BC)%M)%M((A*B)\%M*C)\%M==(A*(B*C)\%M)\%M

(A+B)%M==(B+A)%M(A+B)\%M==(B+A)\%M

(AB)%M==(BA)%M(A*B)\%M==(B*A)\%M

(A+B)%M==(A%M+B%M)(A+B)\%M==(A\%M+B\%M)%M

[(A+B)%MC]%M==[(AC)%M+(BC)%M]%M[(A+B)\%M*C]\%M==[(A*C)\%M+(B*C)\%M]\%M