尊敬的讀者,見文好。
本文包含以下內容:
1,為什么要寫這篇文章!
2,具體的方案及代碼實現!
3,你可能遇到的問題!
4,文末本文測試用源碼網盤地址!
特殊說明:
本文使用的語言是PHP;
本文運行的環境是:Apache2.4, PHP5.6 。
第一部分:為什么要寫這篇文章!
因為經常會有人問到如何輸出“水仙花數”,經查閱百度百科,不僅僅有“水仙花數”,還有很多有意思的數字!嘗試寫出了可以生成這些有趣數字的一個函數!有兩種思路!
注:經過壓測,第一種思路的執行效率要高于第二種!可見對于數據的處理效率要遠遠高于對于文字的處理的!
第二部分:具體的方案及代碼實現!
第一種方案:
使用求余數加上php中的地板函數floor()來獲取數字的每一位并進行數學運算!
/**
* @author Lizisir <962310113@qq.com>
* 可以計算數字中具有特殊含義的數字
* @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 <962310113@qq.com>
* 可以計算數字中具有特殊含義的數字
* @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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。