[写个小demo]ovo~偶然想起数学黑洞的问题,想要验证一下猜想。 简单聊聊6174猜想: 6174猜想,1955年,卡普耶卡(D.R.Kaprekar)研究了对四位数的一种变换:任给出四位数k0,用它的四个数字由大到小重新排列成一个四位数m,再减去它的反序数rev(m),得出数k1=m-rev(m),然后,继续对k1重复上述变换,得数k2.如此进行下去,卡普耶卡发现,无论k0是多大的四位数, 只要四个数字不全相同,最多进行7次上述变换,就会出现四位数6174.
"""狐狸为啥不吃草""" from itertools import combinations def menu_data(nums): # 用字符串的下标操作取出各个位数 a = nums[0] # 千 b = nums[1] # 百 c = nums[2] # 十 d = nums[3] # 个 if not a == b == c == d: list1 = [a, b, c, d] # 去除list1中各个位数都相同的数 for i in combinations(list1, 4): i = list(i) print(i, end='') sums = 0 while True: small = int(''.join(sorted(i))) # print(f'第{sums+1}次,较小数{small}') big = int(''.join(sorted(i, reverse=True))) # print(f'第{sums+1}次,较大数{big}') difference = big - small # print(f'第{sums+1}次,两数差{difference}') sums += 1 if difference == 6174: print(f'结果为:6174,一共用了:{sums}') break else: i = list(str(difference)) # print(i) if len(i) < 4: i.append('0') # print(i) def main(): for i in range(1000, 10000): nums = str(i) menu_data(nums) main()以下是程序运行结果的部分截图: 果然喵的没有超过7次的,是不是贼神奇~~
