326.3的幂

题目

给定一个整数,写一个函数来判断它是否是 3 的幂次方。

示例 1:

输入: 27 输出: true

示例 2:

输入: 0 输出: false

示例 3:

输入: 9 输出: true

示例 4:

输入: 45 输出: false

思路

3或者某个数的幂次方有两个特点:

  1. 这个幂次方模3肯定为0.
  2. 这个幂次方除以3之后继续模3,也会为0,直到它最后变成1

所以我们可以通过循环,只要这个数模3为0就将它除以3,然后继续循环,知道它最后结果为1

代码

1
2
3
4
5
6
7
8
9
10
11
12
public bool IsPowerOfThree(int n)
{
if (n == 0)
{
return false;
}
while (n % 3 == 0)
{
n /= 3;
}
return n == 1;
}