在 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, "不是一个三态数。")

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。