/*
求商和余数
需求:给定两个正整数,分别为被除数和除数,将两数相除
要求:不能使用乘法,除法,%运算
输出商和余数
*/
/*
利用加减法和循环来实现
可以将除数累加,直至刚好大于被除数,此时累加的次数-1就是商,被除数+除数-累加的结果就是余数
例如:
计算 15 / 7
7 < 15 累加1次
7 + 7 < 15 累加2次
7 + 7 + 7 > 15 累加3次,刚好大于被除数
(商: 3 - 1 = 2 , 余数: 15 + 7 - (7 + 7 + 7) = 1)
在这个推导过程中,将"累加"作为循环体,"刚好大于"即"累加<被除数"作为循环条件
*/
import java.util.Scanner;
public class practice_2 {
public static void main(String[] args) {
System.out.println("求商和余数");
System.out.println("请输入被除数:");
Scanner sc = new Scanner(System.in);
//输入被除数
int a = sc.nextInt();
System.out.println("请输入除数");
//输入除数
int b = sc.nextInt();
int sum = 0, i = 0; //i为累加次数
//利用循环,将sum作为累加结果,当sum>被除数时,累加次数-1即为商,被除数+除数-sum即为余数
while (sum < a) {
i++;
sum += b;
}
i--; //倍数-1即为商
int j = a - (sum - b); //被除数+除数-sum即为余数
System.out.println("商是:" + i + '\n' + "余数是:" + j);
}
}
以下是运行结果展示