使用 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
方法!
// 我想知道这段代码有什么问题。
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
方法!