“Given an integer num, write a method to determine if it is a power of 3.”

console.log(powerOfThree(9));
// true


To calculate a power of x, we could keep multiplying by x until we hit the exponent.

That means to see if something is a power of x, we can do the reverse and keep diving by x until we hit 1 or a number that is not a multiple of 3.

E.g. for 9, we’d go 9, 3, 1 and identify it as a power of 3. For 12, we’d go 12, 4 and identify it as not a power of 3.

This has O(log3(n)) complexity.

function powerOfThree(x) {
while (true) {
x /= 3;
if (x === 1) {
return true;
}
if (x % 3 !== 0) {
return false;
}
}
}


Test cases:

powerOfThree(9);
// true

powerOfThree(7);
// false

powerOfThree(729);
// true

powerOfThree(12);
// false

powerOfThree(15);
// false