一、题目
判断一个整数n是否是3的幂次
二、思路
-
循环法。n如果能被3整除,则继续整除,否则返回False。
-
数学法。不同于2的幂次,无法使用按位与进行判断。使用log计算也存在精度问题,无法实现。这里可以使用3^19的因数进行判断。
三、题解
-
循环法
class Solution:
def isPowerOfThree(self, n: int) -> bool:
while n > 2:
if n%3 != 0:
return False
n //= 3
return n == 1 -
数学法
class Solution:
def isPowerOfThree(self, n: int) -> bool:
return n > 0 and (3**19)%n == 0