模数运算分割属性

时间:2014-11-09 09:24:00

标签: math division modulus

我有一个等式,

((a*b*c*d)/(e*f*g*h))%m

我的问题是,我可以先应用乘法属性

(a*b) mod(n) = (a*mod(n)) * (b*mod(n) ) mod(n)

以分子为分母,使分子和分母成为单个值,然后解决除法运算?

(a/b) mod(n) = (a*inv(b)) mod(n)    

1 个答案:

答案 0 :(得分:0)

允许N = a*b*c*dD = e*f*g*h。我们想要计算:

(N/D) mod n = (N * inv(D)) mod n

我们可以通过以下方式使用乘法属性:

(N * inv(D)) mod n = ((N mod n) * (inv(D) mod n)) mod n

要计算N mod n,我们可以再次应用乘法属性,因此答案的第一部分是肯定的 - 您可以在求解除法之前将乘法属性应用于分子,因为无论如何都必须这样做。

(inv(D) mod n)的结果是满足等式的数字X

(D * X) mod n = 1
((D mod n) * (X mod n)) mod n = 1

如果在解决除法之前将乘法属性应用于分母,您将得到:

(((D mod n) mod n) * (X mod n)) mod n = 1

然而(D mod n) mod n = D mod n所以它并不重要。这意味着答案的第二部分也是肯定的 - 你可以在解决分割之前将乘法属性应用于分母。