Given an integer (signed 32 bits), write a function to check whether it is a power of 4/3/2.
- 解法
这道题本来想循环除,发现题目不能给循环,然后跑了一遍,发现最小整数不满足,一想,最大整数不就是4n-1所以啊,对4来说n最大就取到16就好了呀!,对2就是取到32呀,对3的话,不知道具体是多少,随便取个30吧~
/**power of 4.
* @param {number} num
* @return {boolean}
*/
var isPowerOfFour = function(num) {
for(var i=0;i<16;i++){
if(num==Math.pow(4,i))return true;
}
return false;
};
/**power of 3.
* @param {number} n
* @return {boolean}
*/
var isPowerOfThree = function(n) {
for(var i=0;i<30;i++){
if(n==Math.pow(3,i))return true;
}
return false;
};
/** power of 2.
* @param {number} n
* @return {boolean}
*/
var isPowerOfTwo = function(n) {
for(var i=0;i<32;i++){
if(n==Math.pow(2,i))return true;
}
return false;
};