Find remainder without using modulo operator

Objec­tive:  Write Given two integers ‘number’ and ‘divisor’, Write an algorithm to find the remainder if ‘number’ is divided by ‘divisor’.

Condition: You are not allowed to use modulo or % operator.

Example:

num = 10, divisor = 4
remainder = 2

num = 11, divisor = 2
remainder = 1

This is fun puzzle which is asked in the interview.

Approach:

1.     This problem will become very trivial if use of modulo or % operator is allowed.

2.     Idea is Keep subtracting the divisor from number till number>=divisor.

3.     Once the step above is done, remaining value of number will be the remainder.

Example:

number = 10, divisor = 4
number = number – divisor => 10 – 4 = 6
number = number – divisor => 6 – 4 = 2
remainder = 2

Code:

public class FindRemainder {
public static void remainder(int n, int divisor){
if(divisor==0){
System.out.println("Cannot divide by 0");
return;
}
//if either number or divisor is negative
if(n<0)
n *=1;
if(divisor<0)
divisor *= 1;
int number = n;
//subtract divisor from n till n>=divisor
while(n>=divisor){
n -= divisor;
}
System.out.println("Number: " + number + " , divisor: " + divisor + ". remainder: " + n);
}
public static void main(String[] args) {
int n = 10;
int divisor = 4;
remainder(n, divisor);
}
}

view raw
FindRemainder.java
hosted with ❤ by GitHub


Output:

Number: 10, divisor: 4. remainder: 2

1 thought on “Find remainder without using modulo operator”

  1. Continuously subtracting is not such an effective way to go. Instead, we can do it like this:
    mul = int(number/divisor);
    remainder = number – mul * divisor;

    Reply

Leave a Reply to ashot madatyan Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.