如何在不使用 % 和/运算符的情况下检查数字是否可以被 5 整除。 我想要一个最快的算法来解决这个问题。
最佳答案
一个好的起点是研究如何通过乘法和移位来完成除法。 This question是一个值得一看的地方。
特别是,您可以按照随附的帖子找到以下策略。首先,使用乘法和移位“除以 5”:
int32_t div5(int32_t dividend) {
int64_t invDivisor = 0x33333333;
return 1 + (int32_t) ((invDivisor * dividend) >> 32);
}
然后,将结果乘以 5:
int result = div5(dividend) * 5;
然后,result == dividend
当且仅当 dividend
可以被 5 整除。
if(result == dividend) {
// dividend is divisible by 5
}
else {
// dividend is not divisible by 5
}
关于c - 不使用 % 和/运算符的 5 的整除率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17113660/