1. 模運算是取餘運算(記做 % 或者 mod),具有周期性的特點。 m%n的意思是n除m後的餘數, 當m遞增時m%n呈現週期性特點, 並且n越大,週期越長,週期等於n。
例如
0 % 20 = 0,1 % 20 = 1, 2 % 20 = 2, 3 % 20 = 3, ..., 19 % 20 = 19
20 % 20 = 0,21 % 20 = 1,22 % 20 = 2,23 % 20 = 3, ...,39 % 20 = 19
2. 如果 m % n = r,那麼可以推出如下等式
m = k * n + r (k為大於等於0的整數, r <= m)
3. 同餘式, 表示正整數a,b對n取模,它們的餘數相同,記做 a ≡ b mod n或者a = b (mod n)。
根據2的等式可以推出 a = kn + b 或者 a - b = kn
證明: ∵ a = k1 * n + r1
b = k2 * n + r2
∴ a - b = (k1 - k2) * n + (r1 - r2)
a = k * n + (r1 - r2) + b
∵ a, b對n取模同餘,r1 = r2
∴ a = k * n + b (k = k1 - k2)
4. 模運算規則, 模運算與基本四則運算有些相似,但是除法例外。其規則如下
(a + b) % n = (a % n + b % n) % n (1)
(a - b) % n = (a % n - b % n) % n (2)
(a * b) % n = (a % n * b % n) % n (3)
ab % n = ((a % n)b) % n (4)
(1)式證明
∵ a = k1*n + r1
b = k2*n + r2
a % n = r1
b % n = r2
∴(a+b) % n = ((k1+k2)*n + (r1+r2)) % n = (r1+r2) % n = (a % n + b % n)% n
得證
(2)式證明同上
(3)式證明
a = k1*n + r1
(a*b) % n = (k1k2n2 + (k1r2+k2r1)n + r1r2) % n = r1r2 % n = (a %n * b %n ) % n
(4)式證明
設 a % n = r
ab %n= (a * a * a * a…*a) %n = (a %n * a %n * a %n * … * a %n) %n = rb % n = ((a % n) b) % n
模運算看起來不是很直觀,但是可以用來推匯出一些有用的東西。 例如(4)式可以用來降冪運算,例如計算6265 % 133,直接計算的話需要算出6265 利用(4)式可以進行降冪運算。
6265 % 133
= 62 * 6264 % 133
= 62 * (622)32 % 133
= 62 * 384432 % 133
= 62 * (3844 % 133)32 % 133
= 62 * 12032 % 133
= 62 * 3616 % 133
= 62 * 998 % 133
= 62 * 924 % 133
= 62 * 852 % 133
= 62 * 43 % 133
= 2666 % 133
= 6
1. 模運算是取餘運算(記做 % 或者 mod),具有周期性的特點。 m%n的意思是n除m後的餘數, 當m遞增時m%n呈現週期性特點, 並且n越大,週期越長,週期等於n。
例如
0 % 20 = 0,1 % 20 = 1, 2 % 20 = 2, 3 % 20 = 3, ..., 19 % 20 = 19
20 % 20 = 0,21 % 20 = 1,22 % 20 = 2,23 % 20 = 3, ...,39 % 20 = 19
2. 如果 m % n = r,那麼可以推出如下等式
m = k * n + r (k為大於等於0的整數, r <= m)
3. 同餘式, 表示正整數a,b對n取模,它們的餘數相同,記做 a ≡ b mod n或者a = b (mod n)。
根據2的等式可以推出 a = kn + b 或者 a - b = kn
證明: ∵ a = k1 * n + r1
b = k2 * n + r2
∴ a - b = (k1 - k2) * n + (r1 - r2)
a = k * n + (r1 - r2) + b
∵ a, b對n取模同餘,r1 = r2
∴ a = k * n + b (k = k1 - k2)
4. 模運算規則, 模運算與基本四則運算有些相似,但是除法例外。其規則如下
(a + b) % n = (a % n + b % n) % n (1)
(a - b) % n = (a % n - b % n) % n (2)
(a * b) % n = (a % n * b % n) % n (3)
ab % n = ((a % n)b) % n (4)
(1)式證明
∵ a = k1*n + r1
b = k2*n + r2
a % n = r1
b % n = r2
∴(a+b) % n = ((k1+k2)*n + (r1+r2)) % n = (r1+r2) % n = (a % n + b % n)% n
得證
(2)式證明同上
(3)式證明
a = k1*n + r1
b = k2*n + r2
(a*b) % n = (k1k2n2 + (k1r2+k2r1)n + r1r2) % n = r1r2 % n = (a %n * b %n ) % n
(4)式證明
設 a % n = r
ab %n= (a * a * a * a…*a) %n = (a %n * a %n * a %n * … * a %n) %n = rb % n = ((a % n) b) % n
模運算看起來不是很直觀,但是可以用來推匯出一些有用的東西。 例如(4)式可以用來降冪運算,例如計算6265 % 133,直接計算的話需要算出6265 利用(4)式可以進行降冪運算。
6265 % 133
= 62 * 6264 % 133
= 62 * (622)32 % 133
= 62 * 384432 % 133
= 62 * (3844 % 133)32 % 133
= 62 * 12032 % 133
= 62 * 3616 % 133
= 62 * 998 % 133
= 62 * 924 % 133
= 62 * 852 % 133
= 62 * 43 % 133
= 2666 % 133
= 6