执行这两种方法(一种具有整数,一种具有BigInteger类型的方法)匹配



我需要知道这两个循环方法是否以及如何匹配,根据他们自己的语法(具有'整数'类型的两种方法是正确且测试的,但是这两个方法与" BigInteger"类型的类似物不是(。这两种方法(Biginteger类型(是否相当于整数上的方法?技巧在哪里?

for-loop方法(整数(:

  public static int greatest(int x, int y, int n){

    for(int i = n; i > 0; i--) {
       n -= 1;
       if (n % x == 0 && n % y == 0){
           break;
       }
    }
     return n;
}
 public static int smallest(int x, int y, int n){

    for(int i = 0; i < n*n; i++) {
       n += 1;
       if (n % x == 0 && n % y == 0){
           break;
       }
    }
     return n;
} 

vs for-loop方法(bigintegers(:

 public static BigInteger greatest(BigInteger x, BigInteger y, BigInteger n){
    for(BigInteger i = n; i.compareTo(BigInteger.ONE) == 0; i = i.subtract(BigInteger.ONE)) {
       n = n.subtract(BigInteger.ONE);
       if (n.mod(x) == BigInteger.ZERO && n.mod(y) == BigInteger.ZERO){
           break;
       } 
    }
     return n;

}

 public static BigInteger smallest(BigInteger x, BigInteger y, BigInteger n){
    for(BigInteger i = BigInteger.ZERO; i.equals(n.multiply(n)); i = i.add(BigInteger.ONE)) {
       n = n.add(BigInteger.ONE);
       if (n.mod(x) == BigInteger.ZERO && n.mod(y) == BigInteger.ZERO){
           break;
       }
    }
     return n;
}

(您的建议非常欢迎,谢谢(

与biginteger的循环,在您的第一个版本中应为

for(BigInteger i = n; i.compareTo(BigInteger.ZERO) == 1; i = i.subtract(BigInteger.ONE)) {
    ...
}

我看不到您的第二个BigInteger版本与第一个版本如何做同一件事。我没有测试它,但是当您循环到N的正方形时,这似乎真的很奇怪。

相关内容

  • 没有找到相关文章

最新更新