我需要知道 3 个值的幂和 mod 的值,例如:
print 1_299_709 ** 1_300_751 % 104_729
有没有任何红宝石宝石或更快的方法来使用红宝石计算这个?
我需要知道 3 个值的幂和 mod 的值,例如:
print 1_299_709 ** 1_300_751 % 104_729
有没有任何红宝石宝石或更快的方法来使用红宝石计算这个?
这称为模幂运算,并在密码学中大量使用。编写模幂算法相当容易,上面列出的维基百科文章中有一个演示。
您可以使用标准库 openssl 来实现您的目标:
require 'openssl'
1_299_709.to_bn.mod_exp(1_300_751, 104_729) # => 90827
由于 Ruby 2.5 模幂运算是内置的:
print 1_299_709.pow(1_300_751, 104_729)