验证6174猜想(枚举法)---Python

使用枚举法验证 6174猜想:

1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。
使用语言: Python
思路: 对于每一个四位数,将其各个位数放入一个列表中,此列表升序后拼成的数字为最小数,此列表降序后拼成的数字为最大数。利用循环,反复进行操作;差不等于6174则将其分解放入列表中,求得最大小值后相减得差。

!此猜想只针对各位数字不相同的4位数

代码:

def sws(l):     #将列表中数按顺序组成四位数
    y=l[0]*1000+l[1]*100+l[2]*10+l[3]
    return y
def jian(l):    #最大数-最小数
     l.sort()
     n1=sws(l)
     l.sort(reverse=True)
     n2=sws(l)
     t=(n2-n1)
     return t
def f(n):      #将四位数各位取出放入列表
    x=n//1000
    y=n//100%10
    z=n%100//10
    m=n%10
    l=[]
    l.append(x)
    l.append(y)
    l.append(z)
    l.append(m)
    return l
def jd(x):
     l=f(x)
#for i in range(0,4):
#    x=int(input())
#    l.append(x)
     a=jian(l)
     i=1
     while(a!=6174):
            a=jian(f(a))
            i+=1
     if i<8:
            print(x,"最终得到6174操作次数:",i)
     else:
            print(x,"最终得到6174这个数字的操作超过7次。")
for x in range(1000,10000):
    l=f(x)
    if l[0]!=l[1] and l[0]!=l[2] and l[0]!=l[3]and l[1]!=l[2]and l[1]!=l[3]and l[2]!=l[3]:
          jd(x)

若不想枚举,只想验证某位四位数可将代码中注释部分改为非注释部分。

因为是枚举法,最后运行结果数量很多,此处只截一部分图。
部分结果

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用枚举法验证6174猜想的过程如下: 首先,我们需要遍历所有各数字不同的四数。可以使用combinations函数来实现这一步骤。 然后,对于每一个数,我们需要进行判断。我们可以利用排序来得到最大数和最小数。 接下来,我们需要计算差值,并判断差值是否等于6174。如果等于6174,则验证成功。如果不等于6174,则继续进行下一次操作。 在每一次操作中,我们需要将差值转换成字符串,并将其作为下一次的输入。如此进行下去,最多进行7次操作后,会得到6174。 因此,通过枚举法验证6174猜想的过程如上所述。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [枚举验证6174(python程序设计实验8)](https://blog.csdn.net/qq_51174011/article/details/109739505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [小程序6174猜想实现](https://download.csdn.net/download/goodliver/3078543)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值