各位看客,疑問(wèn)有沒(méi)有充滿你大大的腦袋?哈哈,別懵,今天又要給大家介紹一個(gè)好玩的方法,翻譯本文標(biāo)題的大白話就是“用PHP檢查一個(gè)數(shù)是否是阿姆斯特朗數(shù)”,阿姆斯特朗數(shù)其實(shí)也就是水仙花數(shù),那這到底啥數(shù)才是水仙花?又怎么用PHP程序?qū)崿F(xiàn)?下面我們就來(lái)一一介紹~
首先給大家介紹水仙花數(shù)即阿姆斯特朗數(shù)的定義:
水仙花數(shù)也被稱(chēng)為超完全數(shù)字不變數(shù)、自戀數(shù)、自冪數(shù)、阿姆斯壯數(shù)或阿姆斯特朗數(shù)(Armstrong number)。水仙花數(shù)是指一個(gè) 3 位數(shù),它的每個(gè)位上的數(shù)字的 3次冪之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
這下應(yīng)該明白了吧,然后咱們繼續(xù):
直接打開(kāi)編輯器,上代碼!
<?php function armstrong_number($num) { $sl = strlen($num); $sum = 0; $num = (string)$num; for ($i = 0; $i < $sl; $i++) { $sum = $sum + pow((string)$num{$i},$sl); } if ((string)$sum == (string)$num) { return "True"; } else { return "False"; } } echo "153是阿姆斯特朗數(shù)嗎?".armstrong_number(153); echo "<br>21是阿姆斯特朗數(shù)嗎?".armstrong_number(21); echo "<br>4587是阿姆斯特朗數(shù)嗎?".armstrong_number(4587);
來(lái)運(yùn)行結(jié)果看看:
上述例子里,我們給了三個(gè)數(shù)進(jìn)行判斷,分別是153、21、4587。
明顯153是阿姆斯特朗數(shù),而21和4587都不是,所以返回了false。
其實(shí)在PHP程序中想要實(shí)現(xiàn)判斷是不是阿姆斯特朗數(shù),最關(guān)鍵的一點(diǎn)就是它的判定公式!
正如上面定義所說(shuō)的,符合每個(gè)位上的數(shù)字的3次冪之和等于它本身的數(shù)就稱(chēng)之為阿姆斯特朗數(shù),也就是水仙花數(shù)。
那么示例中一個(gè)關(guān)鍵代碼部分就是“$sum =$sum + pow((string)$num{$i},$sl);
”了。
這里pow()是PHP中一個(gè)內(nèi)置函數(shù),用于計(jì)算x的y次方。
至此,是不是就淺顯易懂了?
雖然不難,但是個(gè)人覺(jué)得比較有意思,這樣的思路,也希望能幫助到需要的朋友~
PHP視頻教程請(qǐng)戳->https://www.php.cn/course/list/29/type/2.html