📜  模乘法

📅  最后修改于: 2021-09-27 15:14:44             🧑  作者: Mango

下面是模乘法的一些有趣的性质

上面的公式是下面公式的扩展版本:

示例 1:
求 15 x 17 x 19 除以 7 的余数。
解决方案:
将 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:
求 1421 x 1423 x 1425 除以 12 的余数。
解决方案:
将 1421 除以 12,我们得到 5 作为余数。
将 1423 除以 12,我们得到 7 作为余数。
将 1425 除以 12,我们得到 9 作为余数。
雷姆 [(1421 x 1423 x 1425)/12] = 雷姆 [(5 x 7 x 9)/12]
雷姆 [(35 x 9)/12] = 雷姆 [(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