日期:2025/04/03 04:00来源:未知 人气:53
在本文中,我们可以编程检查一个数是不是另一个数的整数次幂。用户给出两个正整数 m、n,检查 m 是否等于 n^x,其中 x 可以是零或整数。
「示例:」
请输入第一个数 m:9 请输入第二个数 n:3
9 是 3 的整数次幂。
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循环,计算 m 被 n 取余,如果余数不为 0,则 m 不是 n 的整数次幂。计算 m 被 n 整除,如果整除的结果被 n 取余,余数不为 0,则 m 不是 n 的整数次幂。循环计算,直到 m 为 1,则 m 是 n 的整数次幂。
「语法格式:」
defcheck(m, n): if m == 0: returnFalse while m != 1: if m % n != 0: returnFalse m = m // n returnTrue m = int(input("请输入第一个数 m:")) n = int(input("请输入第二个数 n:")) if check(m, n): print(f"{m} 是 {n} 的整数次幂。") else: print(f"{m} 不是 {n} 的整数次幂。")
检查一个数是不是 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 的整数次幂。
defcheck(m): return m and (not(m & (m-1))) m = int(input("请输入一个数 m:")) if check(m): print(f"{m} 是 2 的整数次幂。") else: print(f"{m} 不是 2 的整数次幂。")
❝
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!
❞