Java求商和余数

/*
    求商和余数

    需求:给定两个正整数,分别为被除数和除数,将两数相除
    要求:不能使用乘法,除法,%运算

    输出商和余数
*/
/*
    利用加减法和循环来实现
    可以将除数累加,直至刚好大于被除数,此时累加的次数-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);
    }
}

以下是运行结果展示

Java求商和余数_第1张图片Java求商和余数_第2张图片

你可能感兴趣的:(java)