算法通关村——幂运算问题解析

2幂运算

2.1 求2的幂

LeetCode231:给你一个整数N,请你判断该整数是否是2的幂次方,如果是,返回true,如果否返回false

方法:可以连续对n进行除以2的操作,直到n不能被整除,此时如果n==1,则n是2的幂,否则n不是2的幂

class Solution:
    def isPowerOfTwo(self, n):
        if n <= 0:
            return False
        while n % 2 == 0:
            n //= 2
        return n == 1

if __name__ == "__main__":
    n = 16
    isPowerOfTwo = Solution()
    print(isPowerOfTwo.isPowerOfTwo(n))

2.2 求3的幂

LeetCode326:给定一个整数,写一个函数来判断它是否是3的幂次方。如果是,返回true。否则,返回false。

class Solution:
    def isPowerOfThree(self, n):
        if n <= 0:
            return False
        while n > 1:
            if n % 3 == 0:
                n //= 3
            else:
                return False
        return True

if __name__ == "__main__":
    n = 27
    isPowerOfThree = Solution()
    print(isPowerOfThree.isPowerOfThree(n))

2.3 求4的幂

LeetCode342:给定一个整数,写一个函数来判断它是否是4的幂次方。如果是,返回true,否则,返回false。

class Solution:
    def isPowerOfFour(self, n):
        if n <= 0:
            return False
        while n > 1:
            if n % 4 == 0:
                n //= 4
            else:
                return False
        return True

if __name__ == "__main__":
    n = 16
    isPowerOfFour = Solution()
    print(isPowerOfFour.isPowerOfFour(n))

你可能感兴趣的:(算法,python,开发语言)