1. 程式人生 > >[LeetCode] 326

[LeetCode] 326

題目連結:3的冪 題目描述:給定一個整數,寫一個函式來判斷它是否是 3 的冪次方。 要求不用迴圈或遞迴,O(1)判斷。

有各種奇奇怪怪的方法,打表int範圍內的3的次冪比對,int範圍內最大的3的次冪一定是n倍數,求log3(n)是否為整數,三進位制判斷是否只有首位為1等等。

我用了判斷log3(n)是否為整數的方法。

C語言的log只有以10和e為底的,其他要用換底公式,如: log3(n)=logx(n)/logx(3)log_3(n)=log_x(n)/log_x(3)

講道理這裡的log用log10和log應該是一樣的 但是!! log是以e為底,會有精度損失!(為什麼??

所以換底公式就還是用log10吧。emmmmm