美文网首页
判断一个正整数是否是2的整数次幂

判断一个正整数是否是2的整数次幂

作者: 小蛋子 | 来源:发表于2019-02-25 16:40 被阅读0次

给定一个正整数n,如何最快速判断n是否是2的整数次幂
第一种方法:将n除2,得到商和余数,若余数不为0,则不是;当商不为0时,继续除2,当商为0时,此时余数为0,则是整数次幂,否则不是。

def isN(n):
    if n == 1:
        return True
    
    while n != 1:
        n, v = divmod(n, 2)
        print(n, v)
        if v != 0:
            return False
    if v == 0:
        return True
    return False

第二种方法:如果一个数是2的整数次幂,则其二进制形式有一个特点:除了最高位为1,其余位全为0.此时可以借鉴求取二进制中1的个数的方法。

def isN(n):
    return n & (n-1) == 0

相关文章

网友评论

      本文标题:判断一个正整数是否是2的整数次幂

      本文链接:https://www.haomeiwen.com/subject/kuugyqtx.html