2014-09-06 61 views
0

我需要找到Res =(A/B)%P(P是素數)。代碼或Algo for Modulo Division

我有民= A%P和Den = B%P.

有隻需使用次數,書房和P任何方式找到RES?

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

現在,我怎麼二分找到B ^(P-2)使用書齋%P:

我碰到這個來的?

如果您可以提供給我一個C++/C代碼,我會非常高興,因爲我可以直接在我的遊戲中使用它,否則,請幫助我找到一個公式,以便我可以獲得Res我自己。

+0

通話建議你向有關http://math.stackexchange.com/ – Dave 2014-09-06 17:35:00

+0

http://en.wikipedia.org/wiki/Modular_multiplicative_inverse – 2014-09-06 17:41:30

回答

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);

+0

問題是我不具有B- ,我有(b模p)即Den。我需要寫出方程式b ^(p-2)%p,根據den和p – DarkNemesis 2014-09-06 18:19:57

+0

您也可以使用'qexp(b mod p,p-2)'。 (b mod p)^(p-2)%p等於b ^(p-2)%p – 2014-09-06 18:22:33

+0

謝謝,它工作正常! – DarkNemesis 2014-09-06 19:52:32