编写一个python代码判断一个数是否为2的幂次方
时间: 2024-05-11 21:14:49 浏览: 10
好的,这个问题很简单,可以使用以下代码进行判断:
```python
def is_power_of_two(num):
if num <= 0:
return False
while num > 1:
if num % 2 != 0:
return False
num = num // 2
return True
```
这个函数会接收一个整数作为参数,然后判断这个数是否为2的幂次方,如果是则返回True,否则返回False。
相关问题
python 编写一个递归函数来判断它是否是 2 的幂次方
好的,以下是一个递归函数来判断一个数是否是 2 的幂次方的 Python 代码:
```python
def is_power_of_two(n):
if n == 1:
return True
elif n % 2 != 0 or n == 0:
return False
else:
return is_power_of_two(n // 2)
```
这个函数的思路是,如果一个数是 2 的幂次方,那么它的二进制表示中只有一位是 1,其余都是 0。例如,4 的二进制表示是 100,8 的二进制表示是 1000,16 的二进制表示是 10000。
所以,我们可以用递归的方法,每次将这个数除以 2,直到它变成 1 或者是奇数,如果变成 1,那么它就是 2 的幂次方;如果变成奇数,或者本来就是 0,那么它就不是 2 的幂次方。
编写一个函数判断一个数是否为水仙花数
水仙花数指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如:1^3 + 5^3 + 3^3 = 153。
以下是判断一个数是否为水仙花数的 Python 代码实现:
```python
def isNarcissisticNumber(num):
# 将数字转换为字符串,以便于逐位提取数字
num_str = str(num)
# 计算数字的位数
n = len(num_str)
# 初始化和为0
total = 0
# 逐位提取数字,计算每位数字的n次方之和
for digit in num_str:
total += int(digit) ** n
# 判断数字是否为水仙花数
if total == num:
return True
else:
return False
```
使用示例:
```python
>>> isNarcissisticNumber(153)
True
>>> isNarcissisticNumber(370)
True
>>> isNarcissisticNumber(371)
True
>>> isNarcissisticNumber(407)
True
>>> isNarcissisticNumber(1634)
True
>>> isNarcissisticNumber(8208)
True
>>> isNarcissisticNumber(9474)
True
>>> isNarcissisticNumber(9475)
False
```