📌  相关文章
📜  查找给定数字是否为4的幂(1)

📅  最后修改于: 2023-12-03 15:40:25.405000             🧑  作者: Mango

查找给定数字是否为4的幂

如果要查找一个给定数字是否为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)。具体选择哪种方法取决于需要的运行时间和可读性。