使用PHP實現水仙花數及各種特殊有趣數的輸出
阿新 • • 發佈:2017-05-21
php 水仙花數 特殊數據 有趣 算法
尊敬的讀者,見文好。
本文包含以下內容:
1,為什麽要寫這篇文章!
2,具體的方案及代碼實現!
3,你可能遇到的問題!
4,文末本文測試用源碼網盤地址!
特殊說明:
本文使用的語言是PHP;
本文運行的環境是:Apache2.4, PHP5.6 。
第一部分:為什麽要寫這篇文章!
因為經常會有人問到如何輸出“水仙花數”,經查閱百度百科,不僅僅有“水仙花數”,還有很多有意思的數字!嘗試寫出了可以生成這些有趣數字的一個函數!有兩種思路!
註:經過壓測,第一種思路的執行效率要高於第二種!可見對於數據的處理效率要遠遠高於對於文字的處理的!
第二部分:具體的方案及代碼實現!
第一種方案:
使用求余數加上php中的地板函數floor()來獲取數字的每一位並進行數學運算!
/** * @author Lizisir <[email protected]> * 可以計算數字中具有特殊含義的數字 * @param int $number 數字的位數 * @return null */ function specialNumber( $number ) { $numberNameList = [ ‘獨身數‘, ‘沒有‘, ‘水仙花數‘, ‘四葉玫瑰數‘, ‘五角星數‘, ‘六合數‘, ‘北鬥七星數‘, ‘八仙數‘, ‘九九重陽數‘, ‘十全十美數‘ ]; // 輸出對應的特殊數字的名稱 例如:水仙花數 echo $numberNameList[ $number-1 ].":<br>"; $start = pow( 10, $number-1 ) + 1; $end = pow( 10, $number ); for ( $i = $start; $i < $end; ++ $i ) { // 接受數字每位的n次冪的和 $sum = 0; // 目標數字 $aimNumber = $i; // 計算數字每位的n次冪的和 while( $aimNumber != 0 ) { // 獲取每一位的數字 $wei = $aimNumber % 10; // 計算每一位的n次冪並加到和上面 $sum += pow( $wei, $number ); // 去掉末尾數字 $aimNumber = floor( $aimNumber / 10 ); } if( $i == $sum ) { echo $i; echo "<br>"; } } }
第二種方案:
利用PHP中可以把字符串當數組處理的好處,先把數據轉化成字符串,利用下標直接取出每一位 並進行運算!
/** * @author Lizisir <[email protected]> * 可以計算數字中具有特殊含義的數字 * @param int $number 數字的位數 * @return null */ function specialNumber( $number ) { $numberNameList = [ ‘獨身數‘, ‘沒有‘, ‘水仙花數‘, ‘四葉玫瑰數‘, ‘五角星數‘, ‘六合數‘, ‘北鬥七星數‘, ‘八仙數‘, ‘九九重陽數‘, ‘十全十美數‘ ]; // 輸出對應的特殊數字的名稱 例如:水仙花數 echo $numberNameList[ $number-1 ].":<br>"; $start = pow( 10, $number-1 ) + 1; $end = pow( 10, $number ); for ( $i = $start; $i < $end; ++ $i ) { // 接受數字每位的n次冪的和 $sum = 0; // 計算數字每位的n次冪的和 $i = (string)$i; for($key=0; $key<$number; ++$key) { // 獲取每一位的數字 $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或者更大值!
第四部分:本文代碼的網盤地址!
鏈接:http://pan.baidu.com/s/1mhY7hMw
密碼:74hq
本文出自 “栗子先生” 博客,轉載請與作者聯系!
使用PHP實現水仙花數及各種特殊有趣數的輸出