Python編程算法【二十三】 阿姆斯特朗數(shù)
【案例內(nèi)容】?
如果一個正整數(shù)等于其各個數(shù)字的立方和,則稱該數(shù)為"阿姆斯特朗數(shù)"(亦稱為自戀性數(shù))。
如 153=13+53+33 就是一個"阿姆斯特朗數(shù)"。試編程求10000以內(nèi)的所有"阿姆斯特朗數(shù)"。
【解題思路】
在第二十二題中,我們求過“水仙花數(shù)”,其實“水仙花數(shù)”就是“阿姆斯特朗數(shù)”的子集?!八苫〝?shù)”規(guī)定是3位數(shù),而“阿姆斯特朗數(shù)”則沒有規(guī)定位數(shù)。解題思路跟“水仙花數(shù)”類似,可以用常規(guī)的解法,也可以采取二十二題中,先轉(zhuǎn)換成字符型str,拿到各位,再轉(zhuǎn)回整型int,分別三次方后,進行求和。最后根據(jù)求和的結(jié)果即可判斷是不是“阿姆斯特朗數(shù)”。在求和這一步,我們繼續(xù)用累加求和的方式,便能快速得到求和后的結(jié)果了。
【Python代碼】

我們發(fā)現(xiàn)10000以內(nèi)找到的“阿姆斯特朗數(shù)”包含了1000以內(nèi)的“水仙花數(shù)”,再次證明“水仙花數(shù)”其實就是“阿姆斯特朗數(shù)”的子集。另外,本題的解法更通用,如果需要查詢更大數(shù)字范圍內(nèi)的“阿姆斯特朗數(shù)”,只需修改range函數(shù)里面的數(shù)值即可。
標簽: