一、何為“黑洞數(shù)”
黑洞是茫茫宇宙中的神秘天體。黑洞密度極大,引力極強(qiáng),任何物質(zhì)經(jīng)過(guò)它的附近,都會(huì)被它吸進(jìn)去。
曾有人猜測(cè),百慕大三角洲的飛機(jī)和輪船離奇失蹤,可能就是遭遇了黑洞。當(dāng)然,這一猜測(cè)從未得到公開(kāi)、正確的科學(xué)解釋。
在浩瀚無(wú)垠的數(shù)學(xué)宇宙中,也存在“黑洞”之說(shuō),即取任意一個(gè)數(shù)字不重復(fù)的三位數(shù)或四位數(shù),將該數(shù)字重新組合成可能的最大數(shù)和最小數(shù)后求差,再將這個(gè)差重復(fù)同樣的過(guò)程,經(jīng)過(guò)有限次的重復(fù),最后總是得到同一個(gè)差,這個(gè)差就被稱(chēng)為“黑洞數(shù)”。
如數(shù)字6、7、8、9,重新組合成的最大數(shù)為9876、最小數(shù)為6789,按照上述方法的計(jì)算結(jié)果是:9876-6789=3087,7641-1467=6174,之后不論如何計(jì)算,結(jié)果都是6174,6174即四位數(shù)的“黑洞數(shù)”。
二、求證過(guò)程
C#是微軟開(kāi)發(fā)的基于.net平臺(tái)的編程語(yǔ)言,集windows開(kāi)發(fā)和web應(yīng)用于一體,功能強(qiáng)大,使用方便。
1.了解解題思路
由“黑洞數(shù)”的得出過(guò)程可知,任意一個(gè)無(wú)重復(fù)數(shù)的四位數(shù)或三位數(shù),按照指定的規(guī)則重新組合、求差,然后重復(fù)這一過(guò)程,最后可得出“黑洞數(shù)”。
對(duì)此,可用中文偽代碼表示為“函數(shù)求黑洞(整數(shù)型參數(shù))”,返回值為“差”,然后迭代循環(huán)執(zhí)行“函數(shù)求黑洞”(“差”),直到得出一個(gè)不再變化的“差”,這個(gè)“差”即為黑洞數(shù)。
這個(gè)算法用編程專(zhuān)業(yè)術(shù)語(yǔ)叫“遞歸”,即函數(shù)自己調(diào)用自己。
2.將算法變?yōu)榇a
C#的控制臺(tái)編程簡(jiǎn)單明了,點(diǎn)擊“文件”-“新建”-“項(xiàng)目”,選擇“控制臺(tái)應(yīng)用程序”即可。由以上偽代碼可知,首先需定義一個(gè)求黑洞的函數(shù),具體實(shí)現(xiàn)如下。
以上二十多行代碼即完成了求黑洞數(shù)功能。但如果一個(gè)一個(gè)地將數(shù)字輸入求證,未免是用宰牛刀殺雞,所以,還可用C#來(lái)實(shí)現(xiàn),即讓程序自動(dòng)賦值100至999,或從1000到9999,讓求黑洞函數(shù)進(jìn)行求證,并將結(jié)果顯示。
3.具體求證實(shí)現(xiàn)
先定義一個(gè)函數(shù)(或叫作方法),讓它自動(dòng)循環(huán)迭代計(jì)算出想要的結(jié)果。具體實(shí)現(xiàn)如下。
至此,代碼工作基本完成,啟動(dòng)程序調(diào)試即可看到以下結(jié)果(部分截圖)。
由上可知,四位數(shù)的黑洞數(shù)是6174,三位數(shù)的黑洞數(shù)是495。
三、啟示
以上過(guò)程如果由人工手動(dòng)求證,單計(jì)算幾千個(gè)整數(shù)的求差,就非常耗時(shí),更別說(shuō)后期的計(jì)算了。
可見(jiàn),掌握方便、簡(jiǎn)潔的解題思路即算法,再輔以電子計(jì)算機(jī),我們的學(xué)習(xí)、工作和生活都將如虎添翼。
發(fā)明與創(chuàng)新·中學(xué)生2016年5期