Power of Four
Given an integer (signed 32 bits), write a function to check whether it is a power of 4.
Example: Given num = 16, return true. Given num = 5, return false.
Follow up: Could you solve it without loops/recursion?
Solution:
Power of four has one property (n - 1) % 3 == 0 So we can check if the number is the power of 2 first
bool isPowerOfFour(int num) {
return num > 0 && !(num & (num - 1)) && (num - 1) % 3 == 0;
}
Solution: Keep dividing
bool isPowerOfFour(int num) {
while (num && num % 4 == 0) {
num /= 4;
}
return num == 1;
}