给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27
输出: true
示例 2:
输入: 0
输出: false
示例 3:
输入: 9
输出: true
示例 4:
输入: 45
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
思路分析:
判断n是否是i的幂次方可以通过对数实现。
logi(n) = x 表示n是i的x次方。我们只需要判断x是否为整数即可。
可以通过对数转换公式转成以10为底相除。
class Solution {
public:
bool isPowerOfThree(int n) {
if(!n) return false;
double x = log10(n)/log10(3);
if(x - (int)x < 1e-12) return true;
return false;
}
};