题目
给定一个整数,写一个函数来判断它是否是3的幂次方。如果是,返回True;否则,返回false。
整数n是3的幂次方需满足:存在整数x使得 n = 3^x。
思路
思路一:暴力法
循环的写法
class Solution:
def isPowerOfThree(self, n: int) -> bool:
if n == 0: return False
while n != 1:
if n % 3 != 0:
return False
else:
n //= 3
return True
递归写法
class Solution:
def isPowerOfThree(self, n: int) -> bool:
if n < 1: return False
if n == 1: return True
else: return self.isPowerOfThree(n / 3)
代码优化
class Solution:
def isPowerOfThree(self, n: int) -> bool:
if n < 1: return False
while n % 3 == 0:
n //= 3
return n == 1
class Solution:
def isPowerOfThree(self, n: int) -> bool:
return n > 0 and 1162261467 % n == 0