📜  模乘

📅  最后修改于: 2021-05-04 08:39:33             🧑  作者: Mango

以下是模块化乘法的一些有趣的属性

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

范例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