王威 王德貴
在往期的文章中我們了解了數(shù)學(xué)黑洞——“6174”和“495”,那么大家自然就會想到,其他多位數(shù)還有這樣的黑洞嗎?(2022年6期和8期相關(guān)文章)
今天我們用Python來從數(shù)學(xué)黑洞進一步分析和研究多位數(shù)歸斂。
“6174”和“495”的數(shù)學(xué)黑洞問題,在研究時感到很奇妙,當(dāng)了解了規(guī)律后,就想到除了三位數(shù)和四位數(shù),其他的多位數(shù)也有這樣的黑洞嗎?當(dāng)用五位數(shù)驗證時,發(fā)現(xiàn)它有歸斂,但不是一個數(shù)!
多位數(shù)的分析與前面三位數(shù)和四位數(shù)分析一樣,也要解決以下三個問題。
一是輸入任意一個多位數(shù)(不包含全部相同的數(shù)字),驗證最后經(jīng)過運算是不是能得到一個固定的值,或是得到一個固定的循環(huán)值;
二是在一定范圍內(nèi),是不是所有數(shù)都能得到這個值;
三是要得到這個值最多需要多少步。
思路與四位數(shù)驗證一樣,首先要將多位數(shù)分解開單個數(shù)字,存儲在新列表中,然后排序列表,輸出最大和最小數(shù),做差,然后再存儲在新列表中,循環(huán)操作,看看最后是不是得到一個固定的值。
程序涉及的是中國電子學(xué)會編程等級考試四級內(nèi)容。
即是輸入一個數(shù)字不完全相同的多位數(shù),進行驗證,看看能得到什么樣的規(guī)律,需要幾個步驟。我們先以五位數(shù)為例說明。
(1)遞推法
輸入一個5位數(shù),但5個數(shù)字不能完全相同,將其轉(zhuǎn)換為列表,排序、連接、轉(zhuǎn)換出最大值和最小值,做差,再轉(zhuǎn)換為列表,如果不夠5位,則添加“0”,進行下一輪循環(huán)(圖1)。
驗證“12345”的輸出結(jié)果(圖2)。
(2)遞歸法
遞歸與遞推的不同之處,是調(diào)用了自身,達到循環(huán)的目的。過程和方法與遞推類似(圖3)。
兩種方法驗證的結(jié)果是完全一樣的(圖4)。
即是驗證一定范圍內(nèi)所有數(shù)字不完全相同的5位數(shù),看看能不能得到歸斂組。
(1)遞推法
通過遞推法驗證指定范圍內(nèi)的5位數(shù)是否有歸斂組(圖5)。
下面是在10000-10800范圍內(nèi)的驗證結(jié)果。這是歸斂組內(nèi)沒有排序(28行),大家可以看到,列表中數(shù)據(jù)相同,但順序不同(圖6)。
如果28行進行排序,則結(jié)果就是這個了(圖7)。
(2)遞歸法
遞歸法程序不做詳述,大家自己可以研究一下(圖8)。
驗證10000-10800和遞推是一樣的。因為遞歸深度是1024,所以驗證范圍取800(圖9)。
輸入其他位數(shù)的一定范圍內(nèi)時,都會得到歸斂組嗎?這里我只給程序,也不做詳述。
(1)遞推法(圖10)
(2)遞歸法(圖11)
對于N位數(shù)的歸斂問題,大家可以自行驗證,注意遞歸法的深度限制。
本文是我自己的研究過程和心得,有不妥之處,請各位老師和同學(xué)斧正!