python编写一个函数,判断某整数是否为 2 的整数次幂。
时间: 2024-02-13 14:04:13 浏览: 33
如果一个整数是2的整数次幂,那么它的二进制表示中只有最高位是1,其余位都是0。因此,可以通过将该整数与该整数减1相与,判断结果是否为0来判断该整数是否为2的整数次幂。
具体实现代码如下:
```python
def is_power_of_two(n):
return n > 0 and (n & (n - 1)) == 0
```
其中,`n > 0`表示排除负整数和0,`(n & (n - 1)) == 0`表示将n与n-1相与,如果结果为0,则说明n是2的整数次幂。
另外,还可以使用位运算的技巧,判断一个整数的二进制表示中是否只有一个1,如果是,则说明它是2的整数次幂。
具体实现代码如下:
```python
def is_power_of_two(n):
return n > 0 and (n & (n - 1)) == 0 and (n & 0x55555555) != 0
```
其中,`(n & 0x55555555) != 0`表示判断n的二进制表示中是否只有一个1,0x55555555是16进制表示的1431655765,其二进制表示为01010101010101010101010101010101,用于判断一个32位整数的二进制表示中是否只有一个1。
相关问题
python编写一个函数判断正整数是否为素数,输入不含素数的列表
可以编写一个函数来判断正整数是否为素数,然后使用这个函数来检查列表中的每个数是否为素数。下面是一个实现的例子:
```python
def is_prime(num):
"""
判断一个正整数是否为素数
"""
if num <= 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def check_primes(num_list):
"""
检查列表中的每个数是否为素数
"""
for num in num_list:
if is_prime(num):
print(f"{num}是素数")
else:
print(f"{num}不是素数")
```
你可以使用这个函数来检查一个列表中的所有数字是否为素数,例如:
```python
num_list = [10, 13, 17, 20, 25, 29]
check_primes(num_list)
```
输出结果应该为:
```
10不是素数
13是素数
17是素数
20不是素数
25不是素数
29是素数
```
python编写一个函数判断正整数是否为素数,输出不含素数的列表
以下是一个实现:
```python
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
def prime_filter(n):
primes = []
for i in range(2, n+1):
if is_prime(i):
primes.append(i)
return primes
n = int(input("请输入一个正整数:"))
primes = prime_filter(n)
print("素数列表:", primes)
print("不含素数的列表:", [i for i in range(2, n+1) if i not in primes])
```
使用方法:
1. 运行代码,会提示输入一个正整数。
2. 输入需要判断的正整数,按回车键确认。
3. 程序会输出素数列表和不含素数的列表。
其中,`is_prime(n)`函数用于判断一个正整数是否为素数,`prime_filter(n)`函数用于筛选出小于等于`n`的素数列表,最后输出不含素数的列表。