Given an integer, write a function to determine if it is a power of three.
Example 1:
Input: 27 Output: true
分析:
判断一个数是否为3的幂。可以依次/3,直到为1或者%3余数不为0。只要出现余数不为0,则为false,若最后余数为0,则为true,特别的是1为true,小于等于0为false。
解法一:
class Solution {
public:
bool isPowerOfThree(int n) {
if(n <= 0)
return false;
if(n == 1)
return true;
while(n/3 != 1)
{
if(n%3 != 0)
return false;
else
n /= 3;
}
if(n%3 == 0)
return true;
else
return false;
}
};
如果不用循环,可以利用对数求解。如果n为3的幂,则同底对数相除一定为整数。
解法2:
class Solution {
public:
bool isPowerOfThree(int n) {
if(n <= 0)
return false;
if(int(log10(n)/log10(3)) - log10(n)/log10(3) == 0)
return true;
else
return false;
}
};