繁体   English   中英

BigInteger modPow 与 BigDecimal 指数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM