在 Python 中检查一个数是不是另一个数的整数次幂¶
在本文中,我们可以编程检查一个数是不是另一个数的整数次幂。用户给出两个正整数 m、n,检查 m 是否等于 n^x,其中 x 可以是零或整数。
示例:
# 输入:
请输入第一个数 m:9
请输入第二个数 n:3
# 输出:
9 是 3 的整数次幂。
使用 log()¶
log() 返回一个数的自然对数。
语法:
import math
math.log(x[, base])
参数:
x -- 数值表达式。
base -- 可选,底数,默认为 e。
from math import log
m = int(input("请输入第一个数 m:"))
n = int(input("请输入第二个数 n:"))
logvalue = log(m, n)
if int(logvalue) == logvalue:
print(f"{m} 是 {n} 的整数次幂。")
else:
print(f"{m} 不是 {n} 的整数次幂。")
使用 while循环¶
使用 while循环,计算 m 被 n 取余,如果余数不为 0,则 m 不是 n 的整数次幂。计算 m 被 n 整除,如果整除的结果被 n 取余,余数不为 0,则 m 不是 n 的整数次幂。循环计算,直到 m 为 1,则 m 是 n 的整数次幂。
语法格式:
def check(m, n):
if m == 0:
return False
while m != 1:
if m % n != 0:
return False
m = m // n
return True
m = int(input("请输入第一个数 m:"))
n = int(input("请输入第二个数 n:"))
if check(m, n):
print(f"{m} 是 {n} 的整数次幂。")
else:
print(f"{m} 不是 {n} 的整数次幂。")
检查是不是 2 的整数次幂¶
检查一个数是不是 2 的整数次幂,一种巧妙的方法是使用位运算。
2的整数次幂的二进制:
2 -------- 10
4 -------- 100
8 -------- 1000
16 ------- 10000
32 ------- 100000
2的整数次幂的二进制除了首位为 1,其它位置都为 0。
2的整数次幂减 1 的二进制:
1 -------- 01
3 -------- 011
7 -------- 0111
16 ------- 01111
32 ------- 011111
2的整数次幂减 1 的二进制除了首位为 0,其它位置都为 1。
两者做与运算,可以得到 0。利用以上这个特性,可以检查一个数是不是 2 的整数次幂。
def check(m):
return m and (not(m & (m-1)))
m = int(input("请输入一个数 m:"))
if check(m):
print(f"{m} 是 2 的整数次幂。")
else:
print(f"{m} 不是 2 的整数次幂。")
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!