python3 求4位磁力数

本文介绍了一个关于数字操作的小程序,该程序通过一系列步骤验证了6174猜想的有效性。具体步骤包括:将输入的四位数拆分为数字列表,对列表进行排序并组合成最大数与最小数,然后相减得到新数,重复此过程直至得到6174。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def split(n, numberlist):
    numberlist.clear()
    while(n > 0):
        mod = n % 10
        n = int( n / 10)
        numberlist.append(mod)
    return numberlist


def sort(largelist, len):
    for i in range(len):
        for j in range(len - i -1):
            if largelist[j] < largelist[j + 1]:
                tmp = largelist[j]
                largelist[j] = largelist[j + 1]
                largelist[j + 1] = tmp
    return largelist


 
def reverse(smalllist,k):
    for i in range(int(k / 2)):
        t = smalllist[i]
        smalllist[i] = smalllist[k - i -1]
        smalllist[k-i-1] = t
    return smalllist


def combine(list, k):
    temp = 0
    for i in range(k):
        temp1 = list[i] * pow(10, k - i -1)
        temp = temp + temp1
    return temp




n = eval(input("input a number: "))
len = len(str(n))
list = []


if len != 4:
    print("The valid input!")
    exit()


split(n, list)


if list[0] == list[1] == list[2] == list[3]:
    print("The valid input!")
    exit()
    


tarNum = 6174
    
while(n != tarNum):
    split(n, list)
    sort(list, len)
    max = combine(list, len)
    reverse(list, len)
    min = combine(list, len)
    n = max - min
    print("%d - %d = %d\n" % (max, min, n))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值