我正在做一些大整数计算,我需要将BigInteger提升到另一个BigInteger的强大功能..pow()方法执行我想要的操作,但将int值作为参数..modPow方法将BigInteger作为参数,但我不希望答案与我正在尝试计算的值一致.
我的BigInteger指数太大而无法表示为int,有人可以建议一种解决此限制的方法吗?
Math.pow()返回一个double值,只接受int作为参数... BigInteger没有查找BigInteger的函数^ BigInteger通过循环执行它需要很长时间...我还有什么方法可以丢失吗?
Thnx提前......
我正在尝试计算一个大数,这需要BigInteger.Pow(),但我需要指数也是一个BigInteger而不是int.
即
BigInteger.Pow(BigInteger)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
编辑:我想出了一个答案.用户狗帮助我实现了这一目标.
public BigInteger Pow(BigInteger value, BigInteger exponent)
{
BigInteger originalValue = value;
while (exponent-- > 1)
value = BigInteger.Multiply(value, originalValue);
return value;
}
Run Code Online (Sandbox Code Playgroud) 我一直在盯着这个代码而无法弄清楚它有什么问题,也许一副新鲜的眼睛可能有所帮助.
public static BigInteger powerOfBigInteger (BigInteger base, BigInteger power){
if (power == BigInteger.valueOf(0)){
return BigInteger.valueOf(1);
}
if (power == BigInteger.valueOf(1)){
return base;
}
BigInteger x = BigInteger.valueOf(1);
while (x != power ){
base.multiply(base);
x.add(BigInteger.valueOf(1));
System.out.println(x + " " + power);
return base;
}
return base;
Run Code Online (Sandbox Code Playgroud)
我跑了这个,显然x永远不等于力量.任何帮助表示赞赏.