gpt4 book ai didi

java - 在 for 循环条件下使用 BigInteger 不起作用。我应该怎么办?

转载 作者:行者123 更新时间:2023-12-01 07:37:08 25 4
gpt4 key购买 nike

另一个 BigInteger 问题。我的代码适用于 int 和 long,但由于 UVa 中的测试用例更大,我需要使用 BigInteger。但我不知道如何使用 BigInteger,这让我发疯!该代码甚至没有进入 for 循环。好像卡在条件部分了。我尝试使用 for 或 while,他们也有同样的问题。

public class Main{
public static void main(String[] asdf){
Scanner pp = new Scanner(System.in);
int testCases = pp.nextInt();
while(testCases-- > 0){
//BigInteger a = pp.nextBigInteger();
BigInteger low = pp.nextBigInteger();
BigInteger upp = pp.nextBigInteger();
BigInteger max = BigInteger.ZERO;
BigInteger i = low;
//((i.compareTo(upp)==-1)||
//(i.compareTo(upp)==0));
//i.add(BigInteger.ONE))
while((i.compareTo(upp))<0){
if(divCount(i).compareTo(divCount(max))==1){
max = i;
}
i.add(BigInteger.ONE);
}
System.out.println("Between "+low+" and "+upp+", "+max+" has a maximum of "+divCount(max)+" divisors.");
}
}
public static BigInteger divCount(BigInteger n){
BigInteger lim = n;
BigInteger size = BigInteger.ZERO;
BigInteger i = BigInteger.ONE;
while(i.compareTo(lim)<0){
if((n.mod(i).compareTo(BigInteger.ZERO))==0){
lim = n.divide(i);
if(!(lim.equals(i))){
size.add(BigInteger.ONE);
}
size.add(BigInteger.ONE);
}
i.add(BigInteger.ONE);
}
//return size;
return BigInteger.ONE;
}
}

最佳答案

i.add(BigInteger.ONE) 不会修改 i。相反,它返回一个新对象。给i赋值即可得到你想要的效果。对于代码中的其他类似调用也是如此。

关于java - 在 for 循环条件下使用 BigInteger 不起作用。我应该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380507/

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