陳新龍
在神奇的數(shù)學(xué)王國中,一些特殊的數(shù)字有自己的專屬別稱,比如水仙花數(shù)、阿姆斯特朗數(shù)、回文數(shù)……你可以通過上網(wǎng)查閱找到這些數(shù)字中蘊含的秘密,并用程序快速找到它們。今天我就用Scratch來研究一下完全數(shù)。
所謂完全數(shù),又稱完美數(shù)或者完備數(shù),如果一個自然數(shù)恰好等于它本身以外的所有因子之和,那么這種數(shù)就叫做完全數(shù)。要認識完全數(shù)首先得理解因子這個概念,因子就是所有可以整除這個數(shù)的數(shù),不包括這個數(shù)自身。而因數(shù)就是所有可以整除這個數(shù)的數(shù)且包括這個數(shù)自身。假如A*B=C(A、B、C都是整數(shù))那么我們就稱A和B是C的因子,注意只有兩個因子都為整數(shù)時,此關(guān)系才成立。
6是最小的完全數(shù),除去它自身的因子是1、2、3,三個因子1+2+3=6,剛好是該數(shù)的本身。而數(shù)字15的因子有1、3、5、15四個數(shù)字,除去15本身1+3+5=9,所以15不是完全數(shù)?,F(xiàn)在了解了原理之后我們一起尋找1000以內(nèi)的完全數(shù)吧。計算機求完全數(shù)最簡單的方法就是使用窮舉法,列出每個自然數(shù),求出各因子的和,如果這個和等于該自然數(shù),那么這個數(shù)就是一個完全數(shù)。
首先創(chuàng)建三個變量:“自然數(shù)”包括1-1000之間所有的自然數(shù);“數(shù)字n”尋找每個自然數(shù)的因數(shù)過程中的除數(shù),如果自然數(shù)能被數(shù)字n整除,那么數(shù)字n就是這個自然數(shù)的一個因數(shù);“因子和”不包括它本身的所有因子的和。還要創(chuàng)建一個完全數(shù)列表用于存放找到的完全數(shù)。
整個程序采用雙重循環(huán)的結(jié)構(gòu),外層重復(fù)執(zhí)行到自然數(shù)等于1000時跳出循環(huán),代表自然數(shù)從1-1000取值的過程,內(nèi)層循環(huán)用于尋找完全數(shù)的過程,在內(nèi)層循環(huán)中加入判斷語句,如果自然數(shù)除以數(shù)字n的余數(shù)等于零(即整除時),將對應(yīng)的因子進行累加。如果最終得出的因子和等于該自然數(shù)時說明我們找到了一個完全數(shù),將結(jié)果添加到列表中。最終列表中的結(jié)果為6、28、496三個結(jié)果。如果我們耗費更長的時間,能找到完全數(shù)還有8128、33550336。截至2018年,相關(guān)研究者已經(jīng)找到51個完全數(shù)。
其實在神奇的數(shù)學(xué)王國中還有很多類似完全數(shù)這樣有趣的數(shù)字,后期我也會繼續(xù)和大家分享更多有趣的內(nèi)容包括北斗七星數(shù)、九九重陽數(shù)……