python-3.x 内置模逆运算,C++

eyh26e7m  于 2023-01-18  发布在  Python
关注(0)|答案(2)|浏览(124)

a very nice way来求python-3.8中的模逆(即,对于给定的ambab ≡ 1 (mod m)):

b = pow(a, -1, m)

pow内置在python-3.8中,c++中是否有类似的东西?

l0oc07j2

l0oc07j21#

不,C++中没有内置函数(回答你的问题:)。

5t7ly7z5

5t7ly7z52#

是的,相对标准的库boost有函数boost::integer::mod_inverse

#include <boost/integer/mod_inverse.hpp>
#include <iostream>

using boost::integer::mod_inverse;

int main(void)
{
  int x = 3;
  int m = 5;

  int y = mod_inverse(x, m);

  std::cout << x << " ^-1 (mod " << m << ") = " << y << std::endl;;

  return 0;
}

输出:

3 ^-1 (mod 5) = 2

参考文献:

请注意,如果am不是互质的,mod_inverse(x, m)返回0,而python的pow(x, -1, m)则引发ValueError: base is not invertible for the given modulus

相关问题