目标
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3^x
示例 1:
输入:n = 27
输出:true
示例 2:
输入:n = 0
输出:false
示例 3:
输入:n = 9
输出:true
示例 4:
输入:n = 45
输出:false
说明:
- -2^31 <= n <= 2^31 - 1
进阶:你能不使用循环或者递归来完成本题吗?
思路
判断给定整数 n
是否是 3
的幂。
进阶解法是判断是否为最大的 3
的幂的约数,Integer 范围内最大的 3
的幂为 3^19 = 1162261467
,如果 n
是 3
的幂那么一定可以被它整除。
代码
/**
* @date 2025-08-13 8:40
*/
public class IsPowerOfThree326 {
public boolean isPowerOfThree(int n) {
int base = 3;
long num = 1;
while (num <= n) {
if (num == n) {
return true;
}
num *= base;
}
return false;
}
}