跳至主要內容

0326. 3 的幂

ITCharge小于 1 分钟

0326. 3 的幂open in new window

  • 标签:递归、数学
  • 难度:简单

题目大意

给定一个整数 n,判断 n 是否是 3 的幂次方。231n2311-2^{31} \le n \le 2^{31}-1

解题思路

首先排除负数,因为 3 的幂次方不可能为负数。

因为 n 的最大值为 23112^{31}-1。计算出在 n 的范围内,3 的幂次方最大为 319=11622614673^{19} = 1162261467

3 为质数,则 3193^{19} 的除数只有 30,31,,3193^0, 3^1, …, 3^{19}。所以若 n 为 3 的幂次方,则 n 肯定能被 3193^{19} 整除,直接判断即可。

代码

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