2024.5.11

8-3 【Python0004】验证6174猜想
分数 10
作者 doublebest
单位 石家庄铁道大学

【题目描述】1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。请编写程序验证这个猜想。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】在一行中输入一个任意各位数字不相同的4位数。
【输出格式】验证6174猜想,输出过程中计算得到的各数,数据间以空格为间隔。
【输入样例】2694
【输出样例】2694 7173 6354 3087 8352 6174

 

def kaprekar_process(num):

# 循环直到得到6174

while num != 6174:

# 将数字转换为字符串,方便进行操作

num_str = str(num)

# 将数字字符串补齐到4位,不足的高位用'0'填充

while len(num_str) < 4:

num_str = '0' + num_str

# 将数字字符串按照非递减顺序排序得到最小数和最大数

min_num = int(''.join(sorted(num_str)))

max_num = int(''.join(sorted(num_str, reverse=True)))

# 计算差值并更新num

num = max_num - min_num

# 输出当前数

print(num, end=' ')

# 输入一个任意各位数字不相同的4位数

num = int(input("Enter a 4-digit number with distinct digits: "))

# 验证6174猜想并输出过程中计算得到的各数

print(num, end=' ')

kaprekar_process(num)

posted @ 2024-06-13 15:37  liuxuechao  阅读(3)  评论(0编辑  收藏  举报