# leetcode解題:(Easy) 326. Power of Three 題目:https://leetcode.com/problems/power-of-three/description/ 描述:判斷輸入的數字是否為3的次方數 解題思路(1):用對數的基底變換計算![](https://i.imgur.com/jaRkDYV.png),如果`i = log10(n) / log10(3)`的`i`為整數的話代表`n`為3的次方數 程式碼: ```JAVA= class Solution { public boolean isPowerOfThree(int n) { return n > 0 && (Math.log10(n) / Math.log10(3)) % 1 == 0; } } ``` 時間複雜度:O(1) 空間複雜度:O(1) --- 解題思路(2):如果要找的基底是質數的話還能用另一個技巧,因為質數只能被質數本身和1整除,所以我們可以找出題目輸入的限制中(這題中輸入最大到`2^31 - 1`)最大的3的次方數(在這題中會是`3^19`),如果輸入`n`能被`3^19`整除則代表`n`也是3的次方數 程式碼: ```JAVA= class Solution { public boolean isPowerOfThree(int n) { return n > 0 && Math.pow(3, 19) % n == 0; } } ``` 時間複雜度:O(1) 空間複雜度:O(1) ###### tags: `leetcode` `easy` `math method`