使用BigInteger的GCD编号的乘积

时间:2015-03-07 19:15:12

标签: java function biginteger greatest-common-divisor

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

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的产品。

1 个答案:

答案 0 :(得分:0)

我可以看到三个错误。

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

其次,i.add(one)应为i = i.add(one);i.add(one)BigInteger更大i 1,但它不会更改i的值。

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

此外,gcd课程中已有BigInteger方法!