直接调用divideandremainder方法返回长度为2的biginteger[]数组,索引0为商、索引1为余数;该方法不修改原对象,除数为零时抛arithmeticexception,且遵循向零取整规则。

直接调用 divideAndRemainder 方法,它返回一个长度为 2 的 BigInteger[] 数组,索引 0 是商,索引 1 是余数。
方法签名和基本用法
divideAndRemainder 是 BigInteger 类的实例方法,不修改原对象,也不抛出除零异常(但除数为 0 时会抛 ArithmeticException)。
示例:
BigInteger dividend = new BigInteger("100");BigInteger divisor = new BigInteger("7");
BigInteger[] result = dividend.divideAndRemainder(divisor);
BigInteger quotient = result[0]; // 商:14
BigInteger remainder = result[1]; // 余数:2
注意商和余数的数学定义
Java 中的 divideAndRemainder 遵循“向零取整”规则,即商是 dividend / divisor 向零截断后的整数,余数满足:dividend.equals(quotient.multiply(divisor).add(remainder)),且 remainder.abs() 。
负数时行为明确:
new BigInteger("-10").divideAndRemainder(new BigInteger("3)) → [ -3, -1 ]new BigInteger("10").divideAndRemainder(new BigInteger("-3")) → [ -3, 1 ]new BigInteger("-10").divideAndRemainder(new BigInteger("-3")) → [ 3, -1 ]
常见误用提醒
不要把返回数组当作“自动解构”,Java 不支持元组解构语法;必须显式访问下标。
避免重复计算:如果既需要商又需要余数,不要分别调用 divide 和 remainder —— 这会做两次大数除法运算,性能更低。
务必检查除数是否为零,否则运行时抛异常:
if (divisor.equals(BigInteger.ZERO)) {throw new IllegalArgumentException("Divisor cannot be zero");
}
BigInteger[] qr = dividend.divideAndRemainder(divisor);
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











