在 Python 中检查一个数字是否是三态数(Trimorphic Number)¶
给定一个数 N,计算它的立方,给定的数字出现在其立方结果的末尾,则称为三态数。
例如:N = 25,N**3 = 25*25*25 = 15625
给定的数字 25 出现在立方结果的末尾。
因此,25 是一个三态数。
方法1:字符串切片¶
算法:
将待检测数字存储在变量 num1。
计算给定数字的立方,并使用 str() 函数将其转换为字符串 num2。
使用 str() 函数将给定的数字转换为字符串并将其存储在变量 str_num。
使用 len() 函数计算上述字符串 str_num 的长度并将其存储在变量 len_str。
使用 if 条件语句和切片检查字符串是否相等(利用给定数字长度对立方结果切片)。
如果语句为 True,则输出给定的数字是一个三态数。
如果为 False,则输出给定的数字不是一个三态数。
num1 = 75
num2 = str(num1**3)
str_num = str(num1)
len_str = len(str_num)
if num2[-len_str:] == str_num:
print(num1, "是一个三态数。")
else:
print(num1, "不是一个三态数。")
方法2:数字取余整除¶
算法:
自定义函数。参数是待检测数字 N。
计算 N 的立方,存储在变量 M。
使用 while 循环,条件是待检测数字 N > 0。
分别对 N 、M 取余,判断取余结果是否相等。
如果不相等,函数返回 False。
分别对 N、M 整除 10,去掉最后一位数字。
继续 while 循环。
经过多次整除,待检测数字 N 为 0,while 循环结束。
函数返回 True。
使用 if 语句判断函数返回结果。
如果语句为 True,则输出给定的数字是一个三态数。
如果为 False,则输出给定的数字不是一个三态数。
def isTrimorphic(N) :
M = N * N * N
while N > 0:
if N % 10 != M % 10:
return False
N = N // 10
M = M // 10
return True
N = 24
if isTrimorphic(N):
print(N, "是一个三态数。")
else :
print(N, "不是一个三态数。")
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。