我需要找到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靠我自己。
答案 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);