模块化算术 - 分区

时间:2014-09-30 21:38:48

标签: algorithm modular-arithmetic

如何计算(a / b)%m其中a = x1 * x2 * ....且数字x1,x2,...非常大。

如果我们只需要找到%m,我们就可以轻松地使用(x1%m)*(x2%m)* ...但是如果在分母中有某些东西,那么b'在我们的例子中,如何计算它?

我读到的地方是(a%(m * b))/ b。我一直想知道这是否属实,我们如何去证明呢?

1 个答案:

答案 0 :(得分:0)

你至少可以做到这一点:

b * ((a / b) % m) = (b * (a / b)) % (b * m)
                  = (a - (a % b)) % (b * m)
                  = (a % (b * m) - (a % b) % (b * m))
                  = (a % (b * m) - (a % b))

hence,

((a / b) % m) = ((a % (b * m)) - (a % b)) / b

这已经更容易计算,因此我有理由将此作为答案。我你可以从那里继续你建议的更简单的公式,但我没有时间或倾向于这样做。 (所以,如果这是家庭作业,那么我会留下一些让你自己做的事情:))