在先前的文章《PHP循環學習七:列印9*9速算口訣表的兩種方法》中,我們介紹瞭如何使用for循環和while循環列印九九乘法口訣表。下面我們繼續來了解PHP循環,介紹一下判斷給定一個數字是不是完數的方法,有興趣的朋友可以學習了解一下~
首先我們來了解一下什麼是完數?
完數 全名完全數(Perfect number),如果一個數剛好等於它的因子總和,則這個數就稱為"完數"。 (因數是指除了自身以外的約數。)
例如:6=1 2 3,6就是一個完數。
那麼如果給一個數 num(例如6),我們要怎麼判斷這個數 num 是不是完數?
想法:
1、將數num分解成一個因子,即找到除了自身以外,所有能整除 num 的數。 (這個就需要使用到循環了)。
我們以for迴圈為例,因為1能整除任何整數,所以設定迴圈初始條件 2、找到因子後,需要將這些因子相加,求和。這就需要一個變數$sum來接受計算結果,因為是加法,所以$sum可初始賦值為0。 3、判斷 $sum 和 $num 是否相等,若相等,則$num為完數。 下面給出實作程式碼: 看看輸出結果: 既然知道如何判斷一個數字是不是完數了,下面增加難度:輸出一個給定範圍(就1~10000好了)的所有完數。 分析:有一個1~10000的範圍,那麼我們使用for迴圈來限定範圍,這樣就在上面程式碼的外面在套一層for迴圈: 看看輸出結果: 那如果給定範圍很多,想要知道有多少完數怎麼辦?可以在if語句中加一個計數器 $b,每輸出一個完數,$b就自增1。 看看輸出結果: OK,完成!輸出了1~10000間的所有完數,並統計了完數的個數。 好了就說到這裡了,有其他想知道的,可以點選這個喔。 → →php影片教學 推薦:《PHP面試題大匯總(收藏)》i=1
;而除數不能是num自身,因此限制條件為 i$num=6;
for($i=1;$i<$num;$i++){
if($num%$i==0){//分解因数
}
}
$num=6;
$sum=0;
for($i=1;$i<$num;$i++){
if($num%$i==0){//分解因数
$sum=$sum+$i; //各因数相加,求和
}
}
<?php
header("Content-type:text/html;charset=utf-8");
for($a=1;$a<=10000;$a++){
$sum=0;
for($i=1;$i<$a;$i++){
if($a%$i==0){//分解因数
$sum=$sum+$i; //各因数相加,求和
}
}
if($sum==$i){//如果这个数等于本身 则为完数
echo "$i 是完数!<br>";
}
}
?>
<?php
header("Content-type:text/html;charset=utf-8");
$b=0;
for($a=1;$a<=10000;$a++){
$sum=0;
for($i=1;$i<$a;$i++){
if($a%$i==0){//分解因数
$sum=$sum+$i; //各因数相加,求和
}
}
if($sum==$i){//如果这个数等于本身 则为完数
echo "$i 是完数!<br>";
$b++;
}
}
echo "<br>1~10000范围内有:$b 个完数。";
?>
以上是PHP循環學習八:統計1~10000的完數個數,並輸出全部完數的詳細內容。更多資訊請關注PHP中文網其他相關文章!