# AlgoDaily 07: Power of Three

“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
```