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.