王威 王德貴
在往期的文章中我們了解了數學黑洞——“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位數的歸斂問題,大家可以自行驗證,注意遞歸法的深度限制。
本文是我自己的研究過程和心得,有不妥之處,請各位老師和同學斧正!