验证6174猜想。1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。
from functools import reduce
ls = list(input("请输入任意各位数字不相同的4位数:"))
ss = set(ls)
if len(ss) == len(ls):
lst = ls
i = 0
while True:
min_lst = sorted(lst)
max_lst = sorted(lst, reverse=True)
min_1 = int(reduce(lambda x, y: str(x) + str(y), min_lst))
max_1 = int(reduce(lambda x, y: str(x) + str(y), max_lst))
num = max_1 - min_1
lst = list(str(num))
print(f"{max_1} - {min_1} = \t{num}")
i += 1
if num == 6174:
break
if i <= 7:
print(f"运算{i}次得到结果为6174,运算结果没有超过7次,猜想正确")
else:
print(f"运算{i}次得到结果为6174,运算结果超过7次,猜想错误")
else:
print('输入不符合要求!')
代码演示: