# 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

    }
}
```
