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
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…