C# ModInverse Function

前端 未结 5 1633
梦如初夏
梦如初夏 2020-12-05 19:15

Is there a built in function that would allow me to calculate the modular inverse of a(mod n)? e.g. 19^-1 = 11 (mod 30), in this case the 19^-1 == -11==19;

5条回答
  •  遥遥无期
    2020-12-05 20:03

    Since .Net 4.0+ implements BigInteger with a special modular arithmetics function ModPow (which produces “X power Y modulo Z”), you don't need a third-party library to emulate ModInverse. If n is a prime, all you need to do is to compute:

    a_inverse = BigInteger.ModPow(a, n - 2, n)
    

    For more details, look in Wikipedia: Modular multiplicative inverse, section Using Euler's theorem, the special case “when m is a prime”. By the way, there is a more recent SO topic on this: 1/BigInteger in c#, with the same approach suggested by CodesInChaos.

提交回复
热议问题