leetcode326.3的幂

145 阅读1分钟

326.3的幂

给定一个整数,写一个函数来判断它是否是 3 的幂次方。不使用循环或者递归。

class Solution:
    def isPowerOfThree(self, n: int) -> bool:
        return n > 0 and 3**19 % n == 0

    # def isPowerOfThree2(self, n: int) -> bool:  # 数学运算
    #     return 0 < n == 3 ** round(math.log(n, 3))
"""
整数限制,大部分语言如java
MaxInt = (2^32)/2 - 1
因为我们使用 32 位来表示数字,所以范围的一半用于负数,0 是正数的一部分
知道了 n 的限制,我们现在可以推断出 3 的幂 的最大值,是 1162261467。计算如下:
MaxInt = 3^(log 3 MaxInt) = 3^(19.56) = 3^19 = 1162261467
因为 3 是质数,所以 3^19 的除数只有 3^0,3^1,3^2,……, 3^19
因此,我们应该返回 true 的 n 的可能值是 3^0,3^1,3^2,……, 3^19 
"""