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;
    }

results matching ""

    No results matching ""