Given an integer n, return true if it is a power of three. Otherwise, return false.
An integer n is a power of three, if there exists an integer x such that n == 3x.
Input: n = 27
Output: true
Explanation: 27 = 33
Input: n = 0
Output: false
Explanation: There is no x where 3x = 0.
Input: n = -1
Output: false
Explanation: There is no x where 3x = (-1).
-2^31 <= n <= 2^31 - 1
Could you solve it without loops/recursion?
class Solution
{
public:
bool isPowerOfThree(int n)
{
if (n <= 0)
return false;
int cur = 1;
while (cur <= n)
{
if (n % cur == 0 && cur == n)
return true;
cur = cur * 3;
}
// cur>n
return false;
}
};