题目描述:
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true
示例 2:
输入: 5
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
方法1:
主要思路:
(1)使用循环,只要数字能够对4整除,就一直对数字进行分解;
class Solution {
public:
bool isPowerOfFour(int num) {
//处理特殊的情形
if(num==0){
return false;
}
while(num%4==0){//满足条件,则一直分解
num/=4;
}
return num==1;//判断结果是否是1
}
};
方法2:
主要思路:
(1)使用换底公式计算结果,判断结果是否是整数;
class Solution {
public:
bool isPowerOfFour(int num) {
if(num==0){
return false;
}
double res=log10(num)/log10(4);//换底公式
return res==floor(res);//判读结果是否满足要求
}
};