网站点击率代码,网站建设专业可行性分析,平面设计是干嘛的,找客户app1. 问题描述
检测一个整数n是否为2的幂次。
2. 问题示例
n8#xff0c;返回True#xff1b;n6#xff0c;返回False。
3.代码实现
# 采用UTF-8编码格式
# 参数n是一个整数
# 返回True或者False
class Solution:def checkPowerOf2(self,n):ans 1for i in range(31):if …1. 问题描述
检测一个整数n是否为2的幂次。
2. 问题示例
n8返回Truen6返回False。
3.代码实现
# 采用UTF-8编码格式
# 参数n是一个整数
# 返回True或者False
class Solution:def checkPowerOf2(self,n):ans 1for i in range(31):if ans n:return Trueans ans 1return False
if __name__ __main__:temp Solution()nums1 8nums2 6print((输入str(nums1)))print((输出str(temp.checkPowerOf2(nums1))))print((输入str(nums2)))print((输出str(temp.checkPowerOf2(nums2))))
def isPowerOfTwo(n):if n 0:return Falsewhile n % 2 0:n // 2if n 1:return Trueelse:return False# 首先判断n是否小于等于0如果是直接返回False。
# 然后我们使用while循环不断将n除以2直到n无法再被2整除为止。
# 此时如果n等于1则说明原始数字n是2的幂次否则说明n不是2的幂次返回False。if __name__ __main__:n 8print(初始值, n)result isPowerOfTwo(n)print(是否为2的幂次, result)n 6print(初始值, n)result isPowerOfTwo(n)print(是否为2的幂次, result)
def getPowerOfTwo(n):if n 0:return Nonepower 0while n % 2 0:power 1n // 2if n 1:return powerelse:return None定义了一个名为getPowerOfTwo的函数逻辑与之前的代码基本相同。
不同之处在于我们新增了一个变量power用于记录2的幂次。
每次成功将n除以2后power的值加1。
最后如果n等于1则返回power的值否则返回None。if __name__ __main__:n 8print(初始值, n)power getPowerOfTwo(n)if power is not None:print(是2的幂次幂次为, power)else:print(不是2的幂次)n 6print(初始值, n)power getPowerOfTwo(n)if power is not None:print(是2的幂次幂次为, power)else:print(不是2的幂次)
def isPowerOfTwo(n):# 如果n小于等于0或者n的二进制表示中包含多个1则不是2的幂次return n 0 and (n (n - 1)) 0# 测试示例
n1 8
n2 6print(isPowerOfTwo(n1)) # 输出True
print(isPowerOfTwo(n2)) # 输出False
要检测一个整数n是否为2的幂次可以利用位运算来判断。
如果一个整数是2的幂次它的二进制表示中只有一个1
例如2^3 8 的二进制是 1000而2^2 4 的二进制是 0100。这个算法首先检查n是否大于0然后使用位运算 (n (n - 1)) 来判断是否只有一个1。
如果条件都满足那么n是2的幂次返回True否则返回False。def findExponentOfTwo(n):exponent 0while n 1:if n % 2 ! 0:return None # 如果n不是2的幂次返回Nonen // 2exponent 1return exponent# 测试示例
n1 8
n2 6exponent1 findExponentOfTwo(n1)
exponent2 findExponentOfTwo(n2)if exponent1 is not None:print(f{n1} 是2的 {exponent1} 次幂)
else:print(f{n1} 不是2的幂次)if exponent2 is not None:print(f{n2} 是2的 {exponent2} 次幂)
else:print(f{n2} 不是2的幂次)# 定义了一个名为findExponentOfTwo的函数它返回n是2的幂次时的指数
# 如果n不是2的幂次则返回None。在测试示例中它计算两个整数的指数并输出结果。