Python の gmpy2 拡張モジュールには、 mpz と呼ばれる多倍精度整数型があります。それにはpowmod(x, y, m)
関数が含まれており、Ruby にはその関数がありません。最近、Ruby にはpowmod
. OpenSSL モジュールに隠されています。
require 'openssl'
result = a_big_int.to_bn.mod_exp(exponent, modulo)
gmpy2にもある別の関数は、私が見逃していたdivm(...)
.
divm(a, b, m) は、b * x == a modulo m となるような x を返します。そのような値 x が存在しない場合、ZeroDivisionError 例外を発生させます。
OpenSSL モジュールには、さらに別のサプライズがあるかどうか、またはそのような機能を備えた宝石があるかどうか知っていますか? お急ぎの場合は大変助かります。