循环 BigInteger 数字 java
Loop for BigInteger numbers java
我正在使用下面的代码来查找 完全平方 数字,但不能像 BigInteger
s 这样的大数字,另一个问题是我可以'创建一个完美的循环
Scanner in = new Scanner(System.in);
int q = in.nextInt();
BigInteger[] l = new BigInteger[q];
BigInteger[] r = new BigInteger[q];
int[] num = new int[q];
for (int i = 0; i < q; i++) {
l[i] = in.nextBigInteger();
r[i] = in.nextBigInteger();
num[i]=0;
for (BigInteger j = l[i]; j.compareTo(r[i]) > 0; j.add(BigInteger.ONE)) {
**This loop doesn't work**
}
}
这里有两个问题。首先,假设 j
开始时小于 r[i]
,你的条件是相反的——只要它更小,j.compareTo(r[i]
就会 return 一个小于零的值,不大于零。其次,add
不会修改 BigInteger
实例,它 return 是一个新的 BigInteger
加法结果(即,您可以认为它是 +
运算符,而不是 +=
运算符)。
简而言之,您的循环应该是这样的:
for (BigInteger j = l[i]; j.compareTo(r[i]) < 0; j = j.add(BigInteger.ONE)) {
// Code goes here...
我正在使用下面的代码来查找 完全平方 数字,但不能像 BigInteger
s 这样的大数字,另一个问题是我可以'创建一个完美的循环
Scanner in = new Scanner(System.in);
int q = in.nextInt();
BigInteger[] l = new BigInteger[q];
BigInteger[] r = new BigInteger[q];
int[] num = new int[q];
for (int i = 0; i < q; i++) {
l[i] = in.nextBigInteger();
r[i] = in.nextBigInteger();
num[i]=0;
for (BigInteger j = l[i]; j.compareTo(r[i]) > 0; j.add(BigInteger.ONE)) {
**This loop doesn't work**
}
}
这里有两个问题。首先,假设 j
开始时小于 r[i]
,你的条件是相反的——只要它更小,j.compareTo(r[i]
就会 return 一个小于零的值,不大于零。其次,add
不会修改 BigInteger
实例,它 return 是一个新的 BigInteger
加法结果(即,您可以认为它是 +
运算符,而不是 +=
运算符)。
简而言之,您的循环应该是这样的:
for (BigInteger j = l[i]; j.compareTo(r[i]) < 0; j = j.add(BigInteger.ONE)) {
// Code goes here...