我有一个等式,
((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)
答案 0 :(得分:0)
允许N = a*b*c*d
和D = 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
所以它并不重要。这意味着答案的第二部分也是肯定的 - 你可以在解决分割之前将乘法属性应用于分母。