1

我有以下数学方程式

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 来实现它会很耗时?所以任何建议

4

0 回答 0