gpt4 book ai didi

java - 在检查 BigInteger 的可整除性时,我应该使用 mod 还是 remainder?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:07 25 4
gpt4 key购买 nike

当检查一个 BigInteger a 是否可以被一些 BigInteger b 整除时,我可以写 a.mod(b).equals(BigInteger.ZERO)a.remainder(b).equals(BigInteger.ZERO)

这两个表达式哪个更有效?

编辑:一些人已经正确地指出 mod 不接受负模数。请假设 b 在您的回答中是肯定的。

最佳答案

Javadoc 中记录了这些方法之间的区别。来自 mod(m) :

This method differs from remainder in that it always returns a non-negative BigInteger.

另外,这个方法抛出一个 ArithmeticException如果给定的参数是否定的,根据您的编辑,这不是您的情况。因此,要测试整除性,modremainder 之间没有区别:当其中一个为 0 时,另一个也将为 0。您可以只使用 remainder 因为 mod 可以进行您不需要的另一个计算。


要查看操作上的差异,请考虑以下事项:

public static void main(String[] args) {
BigInteger a = BigInteger.valueOf(-2);
BigInteger b = BigInteger.valueOf(3);
System.out.println(a.remainder(b)); // prints -2
System.out.println(a.mod(b)); // prints 1 == -2 (i.e. the remainder) + 3
}

这实际上与原语 int ab 以及计算 a % b 的区别相同(其中表现得像 remainder) 和 Math.floorMod(a, b) (其行为类似于 mod)。

关于java - 在检查 BigInteger 的可整除性时,我应该使用 mod 还是 remainder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36067589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com