Divisiblity by 5 without using % and / operator

algorithm, c

Solution

A good starting point is to look into how division can be accomplished with multiplication and bit-shifts. This question is one place to look.

In particular, you can follow the attached post to hit upon the following strategy. First, "divide by 5" using multiplication and bit-shifts:

 int32_t div5(int32_t dividend) {
     int64_t invDivisor = 0x33333333;
     return 1 + (int32_t) ((invDivisor * dividend) >> 32);
 }

Then, take the result and multiply by 5:

int result = div5(dividend) * 5;

Then, `result == dividend` if and only `dividend` is divisible by 5.

if(result == dividend) {
    // dividend is divisible by 5
}
else {
    // dividend is not divisible by 5
}

Problem

How to check whether a number is divisible by 5 or not without using % and / operator? I want a quickest algorithm for this problem. I tried subtracting 5 from the number until I get 0 or a negative number. 0 means divisible by 5, negative means not divisible by 5. But for a big number this will take too much time.

Original source

Related problems