> For the complete documentation index, see [llms.txt](https://jaywin.gitbook.io/leetcode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jaywin.gitbook.io/leetcode/solutions/0326-power-of-three.md).

# 0326. Power of Three

<https://leetcode.com/problems/power-of-three>

## Description

Given an integer `n`, return *`true` if it is a power of three. Otherwise, return `false`*.

An integer `n` is a power of three, if there exists an integer `x` such that `n == 3x`.

**Example 1:**

```
**Input:** n = 27
**Output:** true
```

**Example 2:**

```
**Input:** n = 0
**Output:** false
```

**Example 3:**

```
**Input:** n = 9
**Output:** true
```

**Example 4:**

```
**Input:** n = 45
**Output:** false
```

**Constraints:**

* `-231 <= n <= 231 - 1`

**Follow up:** Could you solve it without loops/recursion?

## ac1: iterative

```java
class Solution {
    public boolean isPowerOfThree(int n) {
        if (n <= 0) return false;
        while (n % 3 == 0) {
            n /= 3;
        }

        return n == 1;
    }
}
```

## ac2: trick

3^19 = 1162261467, the biggest number within Integer range. so n must <= 1162261467.

```java
class Solution {
    public boolean isPowerOfThree(int n) {
        if (n <= 0) return false;
        return 1162261467 % n == 0;
    }
}
```

## ac3: math

```java
class Solution {
    public boolean isPowerOfThree(int n) {
        if (n <= 0) return false;

        return Math.log10(n) / Math.log10(3) % 1 == 0; // integer

    }
}
```
