Suppose you want to divide a number a by another number b in java, you will use a / b. So simple, isn’t it. But what if you are required to determine the result by using **only minus(-) operator**, that is, without using division (/) operator.

**Terms**

Following are the common terms used in division of numbers

**Dividend :** The number which is divided.

**Divisor :** The number which divides another number.

**Remainder :** Number which is left as a result of division.

**Quotient :** Number which is obtained by dividing one digit with another.

**For Example**, in the division of 13 is divided by 4 (13/4), 13 is the **dividend**, 4 is the **divisor**, 1 is the **remainder** and 3 is the **quotient**.

**Logic**

Division of two numbers is a repeated subtraction of dividend and divisor till the dividend becomes less than the divisor.

In every step,

- the divisor is subtracted from the remainder of previous step.
- the remainder of the subtraction is treated as the dividend of the next step.

These steps are carried out till the difference of any step(or dividend of next step) becomes less than the divisor. At the end, the digit which is left finally is the remainder and the number of steps carried out is the quotient

It can be observed that in all steps the divisor(or the number which is subtracted) remains the same, only the dividend keeps on changing.

**For Example,** if 13 is divided by 4, then according to above logic, the division would consist of following steps:

13 – 4 = 9

9 – 4 = 5

5 – 4 = 1

Now, the digit which is left finally is 1, which is the remainder and the number of steps carried out is 3, which is the quotient.

Here goes the program.

public static void divide() { // initialize dividend and divisor int dividend = 13; int divisor = 4; // initialize quotient int quotient = 0; //loop till the divisor does not become smaller than dividend while(dividend >= divisor) { dividend = dividend - divisor; quotient++; } // print results System.out.println("Quotient is "+quotient); // result of last subtraction System.out.println("Remainder is "+dividend); } |

**Output**

Quotient is 3

Remainder is 1

The approach will **not** work and will give unexpected result in case either divisor or dividend is **negative**. There is a way out to resolve this problem. Since, in division, we are only concerned with the quotient and remainder and the numeric values of the divisor and dividend. Thus, if your input can contain negative numbers, then before starting the division process, check for negative values and convert them to positive numbers by multiplying them with -1. This will have no effect on the result. **Example**,

public static void divide() { // initialize dividend and divisor int dividend = 13; int divisor = -4; // check for negative dividend if(dividend < 0) { // convert it to positive value dividend = dividend * -1; } // check for negative divisor if(divisor < 0) { // convert it to positive value divisor = divisor * -1; } // initialize quotient int quotient = 0; //loop till the divisor does not become smaller than dividend while(dividend >= divisor) { dividend = dividend - divisor; quotient++; } // print results System.out.println("Quotient is "+quotient); // result of last subtraction System.out.println("Remainder is "+dividend); } |

**Output**

Quotient is 3

Remainder is 1

See, the output remains the same.

Hope you liked this post. Keep visiting for more !!!

Try 7/2 or 7/3 ?

For 7/2, the program outputs “Quotient is 3, Remainder is 1” and for 7/3, the output is “Quotient is 2, Remainder is 1”. I think the output is correct.

Did you get anything else or expect something else. Please revert so that we can clarify.

Try giving negative inputs like 23/-3. I faced this issue in my solution. Hope this edge case helps you.

Thank you so much for pointing out. Updated for these cases.

Keep visiting and correcting.. 🙂