判断一个正整数是不是2的N次幂,是返回1,否返回0代码
时间: 2024-02-22 08:59:36 浏览: 13
一个正整数是2的N次幂,当且仅当它的二进制表示中只有一位是1,其余都是0。因此,我们可以通过位运算来判断一个正整数是否是2的N次幂。具体实现代码如下:
```python
def is_power_of_2(n):
"""
判断一个正整数是否是2的N次幂
"""
return n > 0 and (n & (n - 1)) == 0
```
该函数接受一个正整数作为参数,首先判断该数是不是大于0,如果不是,则一定不是2的N次幂,直接返回 False。如果该数大于0,则将它与它减1后的结果进行按位与运算。如果结果为0,则说明该数的二进制表示中只有一位是1,其余都是0,是2的N次幂,返回 True。否则,说明该数的二进制表示中有多个位是1,不是2的N次幂,返回 False。
相关问题
输入一个正整数,如果它是2的幂,责输出true
当输入一个正整数n时,可以使用位运算来判断它是否是2的幂。如果n是2的幂,则n的二进制表示只有一位是1,其它位都是0,例如4的二进制表示为100。因此,如果将n与n-1进行按位与运算,结果应该为0。
下面是使用C++语言实现的代码:
```cpp
#include <iostream>
using namespace std;
bool isPowerOfTwo(int n) {
if (n <= 0) return false;
return (n & (n-1)) == 0;
}
int main() {
int n;
cout << "请输入一个正整数:";
cin >> n;
if (isPowerOfTwo(n)) {
cout << "True" << endl;
} else {
cout << "False" << endl;
}
return 0;
}
```
对于输入的正整数n,函数isPowerOfTwo会返回一个布尔值,表示是否是2的幂。如果是2的幂,则返回true,否则返回false。在main函数中,输入一个正整数n,并调用isPowerOfTwo函数进行判断,输出对应的结果。
判断给定整数是否为水仙花数,是则返回1,否则返回0。
好的,这是一个简单的编程问题。水仙花数是指一个n位正整数(n >= 3),它的每个位上的数字的n次幂之和等于它本身。
以下是一个示例代码实现:
```python
def is_narcissistic_number(num):
# 获取num的位数
num_str = str(num)
n = len(num_str)
# 求每个位上的数字的n次幂之和
sum = 0
for c in num_str:
sum += int(c) ** n
# 判断是否为水仙花数
if sum == num:
return 1
else:
return 0
```
你可以将这段代码复制粘贴到你的编程环境中运行,也可以根据需要进行修改和优化。