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