给定两个整数,被除数和除数(都是正数,且不超过int的范围)。 将两数相除,要求不使用乘法、除法和%运算符。 得到商和余数。用Java编写
时间: 2024-09-23 18:11:11 浏览: 84
python-leetcode面试题解之第29题两数相除-python题解.zip
在Java中,要计算两个整数的商和余数而不使用直接的乘法、除法和取模运算符,可以采用长除法的思想,通过不断减去较小的数来模拟除法过程。以下是一个简单的Java函数实现了这个要求:
```java
public class Main {
public static void main(String[] args) {
int dividend = 100;
int divisor = 7;
getQuotientAndRemainder(dividend, divisor);
}
// 使用迭代的方式计算商和余数
public static void getQuotientAndRemainder(int dividend, int divisor) {
if (divisor == 0) {
throw new IllegalArgumentException("除数不能为零");
}
int quotient = 0; // 商
int remainder = dividend; // 初始余数等于被除数
while (remainder >= divisor) { // 当余数大于等于除数时继续循环
int temp = remainder;
quotient++; // 商加一
remainder -= divisor; // 更新余数为原余数减去除数
// 如果temp小于除数,说明已经找到了正确的减数位置
if (temp < divisor) {
break;
}
}
System.out.println("商: " + quotient + ", 余数: " + remainder);
}
}
```
在这个例子中,我们先检查除数是否为零。然后,我们使用一个while循环来逐步减去`divisor`直到`remainder`小于`divisor`为止,每次循环都会增加`quotient`并更新`remainder`。当满足条件退出循环后,我们就得到了商和余数。
阅读全文