使用 BigInteger 的 GCD 数的乘积

product of GCD numbers using BigInteger

// 我想知道这段代码有什么问题。

public class Solution {

    public static BigInteger findGCD(BigInteger number1, BigInteger number2) {
        if(number2.intValue() == 0){
            return number1;
        }
        return findGCD(number2, number1.mod(number2));
    }

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        BigInteger i,j;
        BigInteger pro = new BigInteger("1");
        Scanner in = new Scanner(System.in);
        BigInteger N = in.nextBigInteger();
        BigInteger M = in.nextBigInteger();
        BigInteger one = new BigInteger("1");
        for(i=one;i.equals(N);i.add(one)){
            for(j=one;j.equals(M);j.add(one)){
                BigInteger a = findGCD(i,j);

                pro = pro.multiply(a);
                System.out.println(pro);
            }
        }
        System.out.println(pro);
    }
}

//我想找出GCD输出的产品.

我可以看到三个错误。

首先,if(number2.intValue() == 0)应该是if(number2.equals(BigInteger.ZERO))。这是因为intValue()只看32位,而不是整数。

其次,i.add(one)应该是i = i.add(one);i.add(one) 计算出比 i 大的 BigInteger 1 但它不会改变 i.

的值

第三,我假设你的意思是for(i=one;!i.equals(N);...

此外,BigInteger class 中已经有一个 gcd 方法!