//我想知道这段代码有什么问题。
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的产品。
答案 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
方法!