自学Python:卡布列克常数

作者: 小强聊成长 | 来源:发表于2022-02-24 12:55 被阅读0次

什么是卡布列克常数?

任意一个不是由完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大数减去较小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。

对于任意一个4位数n,进行如下的运算:

1)将组成该4位数的4个数字由大到小排列,形成由这4个数字构成的最大的4位数。

2)将组成该4位数的4个数字由小到大排列,形成由这4个数字构成的最小的4位数(如果4个数中含有0,则得到的数不足4位)。

3)求这两个数的差,得到一个新的4位数(高位0保留)。

这称为对n进行了一次卡布列克运算。

存在这样一个规律:对一个各位数字不全相同的4位数重复进行若干次卡布列克运算,最后得到的结果总是6174,这个数被称为卡布列克数。

例如:6543-3456=3087

8730-378=8325

8532-2358=6174

7641-1467=6174

现在要求编程来验证卡布列克常数。

下面直接上代码:

########################

def createlkcs(n):# 将输入的4位数拆分存入数组

    # 定义数组lkcs[4],用来存放分解后4位整数num中每位上的数字

    lkcs = [0] * 4

    # 分解整数n

    a = n // 1000  # 千位

    b = (n % 1000) // 100  # 百位

    c = ((n % 1000) % 100) // 10# 十位

    d = ((n % 1000) % 100) % 10 # 个位

    lkcs[0] = a

    lkcs[1] = b

    lkcs[2] = c

    lkcs[3] = d

    # print(lkcs)

    return lkcs

def lkcs_max(lkcs):# 求数组的最大值

    lkcs.sort()

    maxNum = lkcs[3]*1000 + lkcs[2]*100 + lkcs[1]*10 + lkcs[0]

    # print("maxNum = %d" %maxNum)

    return maxNum

def lkcs_min(lkcs):# 求数组的最小值

    lkcs.sort()

    minNum = lkcs[0]*1000 + lkcs[1]*100 + lkcs[2]*10 + lkcs[3]

    # print("minNum = %d" %minNum)

    return minNum

def kblk(n, count):# 递归求卡布列克常数

    if n != 6174 and n != 0:  # 若不等于6174且不等于0,则进行卡布列克运算

        lkcs = createlkcs(n)  # 将4位整数分解,各位数字存入lkcs数组中

        max = lkcs_max(lkcs)  # 求各位数字组成的最大值

        min = lkcs_min(lkcs)  # 求各位数字组成的最小值

        num = max - min  # 求最大值和最小值的差

        count += 1

        # 输出该步的计算过程

        print("[%d]: %d-%d=%d\n" % (count, max, min, num));

        kblk(num, count);  # 递归调用,继续进行卡布列克运算

if __name__ == "__main__":

    n = 1000

    count = 0

    while n <= 1000 or n > 9999:

        n = int(input("请输入一个4位整数:"))

    kblk(n, count)

########################

执行结果如下:

请输入一个4位整数:6532

[1]: 6532-2356=4176

[2]: 7641-1467=6174

请输入一个4位整数:8769

[1]: 9876-6789=3087

[2]: 8730-378=8352

[3]: 8532-2358=6174

________________END______________

相关文章

网友评论

    本文标题:自学Python:卡布列克常数

    本文链接:https://www.haomeiwen.com/subject/oxewhrtx.html