您好,登錄后才能下訂單哦!
尊敬的讀者,見文好。
本文包含以下內(nèi)容:
1,為什么要寫這篇文章!
2,具體的方案及代碼實現(xiàn)!
3,你可能遇到的問題!
4,文末本文測試用源碼網(wǎng)盤地址!
特殊說明:
本文使用的語言是PHP;
本文運行的環(huán)境是:Apache2.4, PHP5.6 。
第一部分:為什么要寫這篇文章!
因為經(jīng)常會有人問到如何輸出“水仙花數(shù)”,經(jīng)查閱百度百科,不僅僅有“水仙花數(shù)”,還有很多有意思的數(shù)字!嘗試寫出了可以生成這些有趣數(shù)字的一個函數(shù)!有兩種思路!
注:經(jīng)過壓測,第一種思路的執(zhí)行效率要高于第二種!可見對于數(shù)據(jù)的處理效率要遠(yuǎn)遠(yuǎn)高于對于文字的處理的!
第二部分:具體的方案及代碼實現(xiàn)!
第一種方案:
使用求余數(shù)加上php中的地板函數(shù)floor()來獲取數(shù)字的每一位并進行數(shù)學(xué)運算!
/** * @author Lizisir <962310113@qq.com> * 可以計算數(shù)字中具有特殊含義的數(shù)字 * @param int $number 數(shù)字的位數(shù) * @return null */ function specialNumber( $number ) { $numberNameList = [ '獨身數(shù)', '沒有', '水仙花數(shù)', '四葉玫瑰數(shù)', '五角星數(shù)', '六合數(shù)', '北斗×××數(shù)', '八仙數(shù)', '九九重陽數(shù)', '十全十美數(shù)' ]; // 輸出對應(yīng)的特殊數(shù)字的名稱 例如:水仙花數(shù) echo $numberNameList[ $number-1 ].":<br>"; $start = pow( 10, $number-1 ) + 1; $end = pow( 10, $number ); for ( $i = $start; $i < $end; ++ $i ) { // 接受數(shù)字每位的n次冪的和 $sum = 0; // 目標(biāo)數(shù)字 $aimNumber = $i; // 計算數(shù)字每位的n次冪的和 while( $aimNumber != 0 ) { // 獲取每一位的數(shù)字 $wei = $aimNumber % 10; // 計算每一位的n次冪并加到和上面 $sum += pow( $wei, $number ); // 去掉末尾數(shù)字 $aimNumber = floor( $aimNumber / 10 ); } if( $i == $sum ) { echo $i; echo "<br>"; } } }
第二種方案:
利用PHP中可以把字符串當(dāng)數(shù)組處理的好處,先把數(shù)據(jù)轉(zhuǎn)化成字符串,利用下標(biāo)直接取出每一位 并進行運算!
/** * @author Lizisir <962310113@qq.com> * 可以計算數(shù)字中具有特殊含義的數(shù)字 * @param int $number 數(shù)字的位數(shù) * @return null */ function specialNumber( $number ) { $numberNameList = [ '獨身數(shù)', '沒有', '水仙花數(shù)', '四葉玫瑰數(shù)', '五角星數(shù)', '六合數(shù)', '北斗×××數(shù)', '八仙數(shù)', '九九重陽數(shù)', '十全十美數(shù)' ]; // 輸出對應(yīng)的特殊數(shù)字的名稱 例如:水仙花數(shù) echo $numberNameList[ $number-1 ].":<br>"; $start = pow( 10, $number-1 ) + 1; $end = pow( 10, $number ); for ( $i = $start; $i < $end; ++ $i ) { // 接受數(shù)字每位的n次冪的和 $sum = 0; // 計算數(shù)字每位的n次冪的和 $i = (string)$i; for($key=0; $key<$number; ++$key) { // 獲取每一位的數(shù)字 $wei = $i[$key]; // 計算每一位的n次冪并加到和上面 $sum += pow( $wei, $number ); } if( $i == $sum ) { echo $i; echo "<br>"; } } }
第三部分:你可能會遇到的問題!
在代碼測試時,你可能會遇到報錯:
Fatal error: Maximum execution time of 30 seconds exceeded
可行的一種解決方案:
進入到PHP的安裝目錄,修改php.ini文件:
找到:
max_execution_time=30
修改為:
max_execution_time=300或者更大值!
第四部分:本文代碼的網(wǎng)盤地址!
鏈接:http://pan.baidu.com/s/1mhY7hMw
密碼:74hq
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。