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