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);
    }
}

以下是运行结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值