题目

给定一个整数,写一个函数来判断它是否是3的幂次方。如果是,返回True;否则,返回false。
整数n是3的幂次方需满足:存在整数x使得 n = 3^x。

image.png

思路

思路一:暴力法

循环的写法

  1. class Solution:
  2. def isPowerOfThree(self, n: int) -> bool:
  3. if n == 0: return False
  4. while n != 1:
  5. if n % 3 != 0:
  6. return False
  7. else:
  8. n //= 3
  9. return True

递归写法

  1. class Solution:
  2. def isPowerOfThree(self, n: int) -> bool:
  3. if n < 1: return False
  4. if n == 1: return True
  5. else: return self.isPowerOfThree(n / 3)

代码优化

  1. class Solution:
  2. def isPowerOfThree(self, n: int) -> bool:
  3. if n < 1: return False
  4. while n % 3 == 0:
  5. n //= 3
  6. return n == 1

image.png

  1. class Solution:
  2. def isPowerOfThree(self, n: int) -> bool:
  3. return n > 0 and 1162261467 % n == 0