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