循环 BigInteger 数字 java

Loop for BigInteger numbers java

我正在使用下面的代码来查找 完全平方 数字,但不能像 BigIntegers 这样的大数字,另一个问题是我可以'创建一个完美的循环

 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...