gpt4 book ai didi

java - 大整数计算问题

转载 作者:行者123 更新时间:2023-12-01 16:05:05 24 4
gpt4 key购买 nike

我使用以下代码,但参数未传递给方法。

BigInteger p = BigInteger.valueOf(0);
BigInteger u1 = obj.bigi_calc(g1, l);

在此 g1,l 中是长值。

方法是

private BigInteger bigi_calc(long g1, long l){           

BigInteger cal = BigInteger.valueOf(g1);
BigInteger cal1= BigInteger.valueOf(l);
for(BigInteger f = BigInteger.ONE;f.compareTo(cal1)>0;f=f.add(BigInteger.ONE)){
//BigInteger p= BigInteger.valueOf(0);
p = cal.multiply(cal1);
System.out.println("check p"+p);
}
// System.out.println("check p"+p);
return p;
}

椭圆表明它可能不同步,但参数没有传递给函数。你能帮我解决这个问题吗?

最佳答案

您是否申报了 BigInteger p = BigInteger.valueOf(0);作为 bigi_calc 之外的局部变量?因为那样的话,那么p的范围不扩展到方法bigi_calc .

您可能想要:

  • 密码 p作为第三个参数
  • 将其设为成员字段

要执行第一个选项,您需要执行以下操作:

private BigInteger bigi_calc(long g1, long l, BigInteger p) { ... }

//...
BigInteger p = BigInteger.valueOf(0);
BigInteger u1 = obj.bigi_calc(g1, l, p);
<小时/>

进一步检查代码会发现它没有任何意义。有一个 BigInteger.pow 如果这就是你想要计算的。并使用 BigInteger对于循环计数器,当它不会超过 long 时只是不必要的困惑。

如果pow(long base, long exp)是您想要的,但由于某种原因您不允许使用 BigInteger.pow ,那么你可以这样写:

static BigInteger pow(long base, long exp){              
BigInteger result = BigInteger.ONE;
BigInteger biBase = BigInteger.valueOf(base);
for (long i = 0; i < exp; i++) {
result = result.multiply(biBase);
}
return result;
}

关于java - 大整数计算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2778734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com