ban*_*ndi 17
a % N = x意味着对于某些整数0 <= x < N和m:m * N + x = a.
你可以简单地推断,然后,如果a % N = x和b % N = y再
(a + b) % N =
= (m * N + x + l * N + y) % N =
= ((m + l) * N + x + y) % N =
= (x + y) % N =
= (a % N + b % N) % N.
Run Code Online (Sandbox Code Playgroud)
我们知道 0 < x + y < 2N,这就是你需要保留余数计算的原因.这表明可以分割求和并分别计算余数然后加上它们,但不要忘记得到总和的余数.
对于乘法:
(a * b) % N =
= ((m * N + x) * (l * N + y)) % N =
= ((m * l + x * l + m * y) * N + x * y) % N =
= (x * y) % N =
= ((a % N) * (b % N)) % N.
Run Code Online (Sandbox Code Playgroud)
因此,您也可以对产品进行相同的操作.
可以使用一些抽象代数(余数形成因子环Z/nZ)在更一般的设置中简单地导出这些属性.
这个怎么样:
int x = (7 + 7 + 7) % 10;
int y = (7 % 10 + 7 % 10 + 7 % 10) % 10;
Run Code Online (Sandbox Code Playgroud)