我有以下数学方程式
for(i=0;i<M;i++)
for(j=0;j<M;j++)
R=((A(i)+B(j))%M)*M+(C(i)+D(j))%M;
在 C 代码中,我试图加快代码速度,我发现如果我删除 mod 操作,它会变得快 6 倍,但我无法删除它但是 A、B、C 和 D 的值在 0 之间和 M,所以我有四个案例
首先如果 A+B 和 C+D 小于 M 不需要进行 mod 操作
R=R
其次,如果 A+B 小于 M 并且 C+D 大于 MI 只需要使
R=R-M
第三,如果 A+B 和 C+D 大于 M 那么我需要 \
R=R-M*M-M
最后,如果 A+B 大于 M 且 C+D 小于 M 则我需要
R=R-M*M
如果我使用 if else 来实现它会很耗时?所以任何建议