📅  最后修改于: 2023-12-03 15:40:25.405000             🧑  作者: Mango
如果要查找一个给定数字是否为4的幂,可以使用以下方法。
def is_power_of_4(n: int) -> bool:
# 判断是否为2的幂
if n > 0 and n & (n - 1) == 0:
# 判断是否为4的幂
return n & 0x55555555 != 0
return False
这个方法首先判断给定数字是否为2的幂,如果是,则判断其是否满足4的幂的条件,即二进制表示中的1必须出现在奇数位上。使用按位与运算符(&)和掩码0x55555555(以二进制形式为1010101010101010101010101010101)可以强制把二进制表示中的1限制在奇数位上,然后检查结果是否非零即可。
import math
def is_power_of_4(n: int) -> bool:
return n > 0 and (math.log(n) / math.log(4)).is_integer()
此方法使用log函数判断给定数字是否为4的幂。如果log以4为底的结果为整数,则该数字为4的幂。
以上两种方法都能有效地判断给定数字是否为4的幂。方法一的时间复杂度为O(1),而方法二的时间复杂度为O(log n)。具体选择哪种方法取决于需要的运行时间和可读性。