[英]BigInteger modPow with BigDecimal exponent
我需要一个 BigInteger modPow 的计算,但使用 BigDecimal 作为指数。
在这种情况下,无法转换为 double 或使用 BigDecimal.pow 然后 mod,因为没有 mod 的完整结果将不适合 memory。 (并且 double 缺乏精度)因此转换为具有适当比例的 BigInteger 也是不可能的。
我没有找到任何图书馆或类似的图书馆。
在数学上甚至可以在不计算完整幂之前用分数指数做一个有效的 modPow 吗?
编辑:示例
BigInteger base = BigInteger.valueOf("101");
BigDecimal exp = BigDecimal.valueOf("24.387207613444534);
BigInteger mod = BigInteger.valueOf("10403");
BigInteger result = base.modPow(exp, mod)
这些样本数量非常少,预期用途需要更大的样本。 它应该提供一个本身太大而无法保存在 RAM 中的数字的 mod,但它是 log 和已知的 integer 除数。
所以我在此期间找到了一种方法。 base ^ (floor(exp - 1)) 作为常规 modPow 乘以 base ^ (1+ (exp - floor(exp)) 然后是 floor 和 mod。最后一个因子为 1.x 的幂仍然足够小,可以放入 RAM。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.