一. 題目描述
Given an integer, write a function to determine if it is a power of three.
Follow up: Could you do it without using any loop / recursion?
二. 題目分析
題目的大意很簡單,給出一個整數,判斷這個整數是不是3的整數次冪。下面提示盡量不適用循環和遞歸來實現,因此這裡給出兩種實現方法,其中第一種循環方式的耗時更少。
三. 示例代碼
class Solution {
public:
bool isPowerOfThree(int n) {
while (n >= 1)
{
if (n == 1 || n == 3)
return true;
else
{
if (n % 3) break;
n /= 3;
}
}
return false;
}
};
class Solution {
public:
bool isPowerOfThree(int n) {
if (n < 1) return 0;
int maxPow3 = log10(INT_MAX) / log10(3);
int maxPow3Val = pow(3, maxPow3);
return maxPow3Val % n == 0;
}
};