以下是模块化乘法的一些有趣的属性
(a x b) mod m = ((a mod m) x (b mod m)) mod m
(a x b x c) mod m = ((a mod m) x (b mod m) x (c mod m)) mod m
The same property holds for more than three numbers.
上面的公式是以下公式的扩展版本:
范例1:
除以7,求出15 x 17 x 19的余数。
解决方案:
将15除以7得到的余数为1。
将17除以7,我们得到3作为余数。
将19除以7,我们得到5作为余数。
表达式的余数(15 x 17 x 19)/ 7将等于(1 x 3 x 5)/ 7。
合并余数等于15/7的余数,即1。
范例2:
除以12,求出1421 x 1423 x 1425的余数。
解决方案:
将1421除以12得到的余数为5。
将1423除以12,我们得到7作为余数。
将1425除以12,我们得到9作为余数。
Rem [(1421 x 1423 x 1425)/ 12] = Rem [(5 x 7 x 9)/ 12]
Rem [(35 x 9)/ 12] = Rem [(11 x 9)/ 12]
雷姆[99/12] = 3
有什么用?
如果我们需要找到两个大数的乘积的余数,则可以避免进行大数的乘积,特别是在编程中大数的乘积可能导致溢出的编程时,这特别有用。
证明:如果我们证明两个数字,那么我们可以轻松地将其概括。让我们看看两个数字的证明。
Let a % m = r1
and b % m = r2
Then a and b can be written as (using quotient
theorem). Here q1 is quotient when we divide
a by m and r1 is remainder. Similar meanings
are there for q2 and r2
a = m x q1 + r1
b = m x q2 + r2
LHS = (a x b) % m
= ((m x q1 + r1 ) x (m x q2 + r2) ) % m
= (m x m x q1 x q2 +
m x q1 x r2 +
m x q2 x r1 + r1 x r2 ) % m
= (m x (m x q1 x q2 + q1 x r2 +
q2 x r1) +
r1 x r2 ) % m
We can eliminate the multiples of m when
we take the mod m.
LHS = (r1 x r2) % m
RHS = (a % m x a % m) % m
= (r1 x r2) % m
Hence, LHS = RHS