当前位置: 首页 > 知识库问答 >
问题:

具有BigDecimal指数的BigInteger modPow

单于俊智
2023-03-14

我需要一个大整数modPow的计算,但以BigDecimal为指数。

在这种情况下,转换为双精度或使用BigDecimal.pow然后使用mod是不可能的,因为没有mod的完整结果将无法放入内存中。(

我没有找到图书馆或类似的。

数学上是否有可能在不计算完全指数的情况下使用分数指数进行有效的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和整数除数是已知的。

共有1个答案

甘学潞
2023-03-14

所以我同时找到了一个方法。基^(floor(exp-1))作为正则modPow乘以基^(1(exp-floor(exp))然后乘以floor和mod。最后一次与因子1的幂运算。x仍然足够小,可以装入RAM。

 类似资料:
  • 问题内容: 如何根据小数舍入为数字设置通用缩放 但 大概分析余数? API中是否有针对此类情况的内容? 问题答案: 看一下https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html#stripTrailingZeros--

  • 我有值,我希望它们至少有两个十进制数字,但我不想修剪其余的数字。 是否有构建方法或更优雅的方法来实现这一点? 我不能使用,因为我希望在存在其他小数时保留它们。

  • 问题内容: 如何计算BigDecimal的对数?有谁知道我可以使用的任何算法? 到目前为止,我在谷歌搜索中提出了(无用的)想法,即仅转换为double并使用Math.log。 我将提供所需答案的精确度。 编辑:任何基地都可以。如果在base x中更简单,我会做。 问题答案: Java Number Cruncher:《 Java数值计算程序员指南》提供了使用牛顿方法的解决方案。这本书的源代码在这里

  • 问题内容: Javax ScriptEngine和JEval的工作原理类似,您输入一个字符串并将其发送以进行求值,它将返回结果: 在ScriptEngine中(在JEval中几乎相同): 将导致: 但是当我尝试使其指数化时: 将导致: 但是它确实应该得到12(2 ^ 3 = 8,8 + 4 = 12),所以我的问题是我该如何设置它,使得将成为整个方程的字符串将评估支持指数,结果正确吗? 我应该使用

  • 问题内容: 我在将控制器中定义的函数与指令中的回调函数绑定时遇到一些麻烦。我的代码如下所示: 在我的控制器中: 然后我的指令: 在我的html页面中: 上面的代码没有运气。根据我在各种教程中所读的内容,我知道我应该在HTML页面中指定参数? 问题答案: 您的代码中有一个小错误,请尝试以下代码,它应该对您有用

  • 问题内容: Java中是否有指数运算符? 例如,如果提示用户输入两个数字,然后他们输入和,则正确答案为。 问题答案: 要通过用户输入执行此操作: