2024/4/20

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

验证猜想

for i in range(1000, 10000):    if len(set(str(i))) == 4:        count = kaprekar_constant(i)        if count <= 7:            print("对于数字 {},猜想成立,操作次数为 {}".format(i, count))

 

posted @ 2024-06-19 00:07  The-rich  阅读(19)  评论(0)    收藏  举报