Modulo Division的代码或Algo

时间:2014-09-06 17:33:24

标签: c++ formula bigdata division modulo

我需要找到Res =(A / B)%P。(P是素数)。

我有Num = A%P,Den = B%P。

有没有办法通过使用Num,Den和P来找到Res?

我遇到了这个:

(a / b) mod p = ((a mod p) * (b^(-1) mod p)) mod p 
i.e. Res = (Num * b ^ (p - 2) % p) % p

现在如何使用Den?

找到b ^(p-2)%p

如果你能为我提供C ++ / C代码,我会非常高兴,因为我可以直接在我的游戏中使用它,否则,请帮助我找到一个公式,这样我就可以获得Res靠我自己。

1 个答案:

答案 0 :(得分:0)

您可以使用快速取幂获得b ^(p-2)%p的结果。

int qexp (int b, int e) {
    if (e == 0) return 1;
    long long h = qexp(b, e/2); //long long to prevent overflow in next step
    h *= h;
    h %= p;
    if (e % 2 == 0) return h;
    else return (h*b)%p;
}

使用qexp(b, p-2);

进行通话