題目:
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 == 3^x.
給定一數,判斷它是否是3的次方
這題除了底數換成3,跟231.根本一模一樣
class Solution:
def isPowerOfThree(self, n: int) -> bool:
if n<=0: #0和負數不在討論範圍
return False
while n%3==0:
n=n//3
return n==1
將一數不斷除三直到不能整除
看最後結果是不是1,就知道該數是不是3的次方了
最後執行時間77ms(faster than 96.06%)
一樣也可以import math用log下去解
import math
class Solution:
def isPowerOfThree(self, n: int) -> bool:
if n<=0: #0和負數不在討論範圍
return False
return (math.log10(n)/math.log10(3))%1==0
透過log的性質,我們可以知道log3(3的次方數)會是整數
且log10(n)/log10(3)=log3(n)
所以我們只要計算log10(n)/log10(3)再用%1判斷是不是整數即可
最後執行時間60ms(faster than 99.86%)
那我們下題見