数学黑洞中多位数归敛的分析
2022-04-06王威王德贵
王威 王德贵
在往期的文章中我们了解了数学黑洞——“6174”和“495”,那么大家自然就会想到,其他多位数还有这样的黑洞吗?(2022年6期和8期相关文章)
今天我们用Python来从数学黑洞进一步分析和研究多位数归敛。
“6174”和“495”的数学黑洞问题,在研究时感到很奇妙,当了解了规律后,就想到除了三位数和四位数,其他的多位数也有这样的黑洞吗?当用五位数验证时,发现它有归敛,但不是一个数!
多位数的分析与前面三位数和四位数分析一样,也要解决以下三个问题。
一是输入任意一个多位数(不包含全部相同的数字),验证最后经过运算是不是能得到一个固定的值,或是得到一个固定的循环值;
二是在一定范围内,是不是所有数都能得到这个值;
三是要得到这个值最多需要多少步。
思路与四位数验证一样,首先要将多位数分解开单个数字,存储在新列表中,然后排序列表,输出最大和最小数,做差,然后再存储在新列表中,循环操作,看看最后是不是得到一个固定的值。
程序涉及的是中国电子学会编程等级考试四级内容。
即是输入一个数字不完全相同的多位数,进行验证,看看能得到什么样的规律,需要几个步骤。我们先以五位数为例说明。
(1)递推法
输入一个5位数,但5个数字不能完全相同,将其转换为列表,排序、连接、转换出最大值和最小值,做差,再转换为列表,如果不够5位,则添加“0”,进行下一轮循环(图1)。
验证“12345”的输出结果(图2)。
(2)递归法
递归与递推的不同之处,是调用了自身,达到循环的目的。过程和方法与递推类似(图3)。
两种方法验证的结果是完全一样的(图4)。
即是验证一定范围内所有数字不完全相同的5位数,看看能不能得到归敛组。
(1)递推法
通过递推法验证指定范围内的5位数是否有归敛组(图5)。
下面是在10000-10800范围内的验证结果。这是归敛组内没有排序(28行),大家可以看到,列表中数据相同,但顺序不同(图6)。
如果28行進行排序,则结果就是这个了(图7)。
(2)递归法
递归法程序不做详述,大家自己可以研究一下(图8)。
验证10000-10800和递推是一样的。因为递归深度是1024,所以验证范围取800(图9)。
输入其他位数的一定范围内时,都会得到归敛组吗?这里我只给程序,也不做详述。
(1)递推法(图10)
(2)递归法(图11)
对于N位数的归敛问题,大家可以自行验证,注意递归法的深度限制。
本文是我自己的研究过程和心得,有不妥之处,请各位老师和同学斧正!