您好,登錄后才能下訂單哦!
PHP中怎么統計1~10000的完數個數,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
完數 全稱 完全數(Perfect number),如果一個數恰好等于它的因子之和,則這個數就稱為"完數"。(因子是指除了自身以外的約數。)
例如:6=1+2+3,6就是一個完數。
那么如果給出一個數 num(例如6),我們怎么判斷這個數 num 是不是完數?
思路:
1、將數num分解成一個個因子,即找到除了自身以外,所有能整除 num 的數。(這個就需要使用到循環了)。
我們以for循環為例,因為1能整除任何整數,所以設置循環初始條件 i=1
;而除數不能是num自身,因此限制條件為 i<num。這樣for循環的框架就粗來了~
$num=6; for($i=1;$i<$num;$i++){ if($num%$i==0){//分解因數 } }
2、找到因子后,需要將這些因子相加,求和。這就需要一個變量$sum來接受計算結果,因為是加法,所以$sum可初始賦值為0。
$num=6; $sum=0; for($i=1;$i<$num;$i++){ if($num%$i==0){//分解因數 $sum=$sum+$i; //各因數相加,求和 } }
3、判斷 $sum 和 $num 是否相等,如果相等,則$num為完數。
下面給出實現代碼:
<?php header("Content-type:text/html;charset=utf-8"); $num=6; $sum=0; for($i=1;$i<$num;$i++){ if($num%$i==0){//分解因數 $sum=$sum+$i; //各因數相加,求和 } } if($sum==$i){//如果這個數等于本身 則為完數 echo "$i 是完數!"; } ?>
看看輸出結果:
既然知道了如何判斷一個數是不是完數了,下面增加難度:輸出一個給定范圍(就1~10000好了)的所有完數。
分析:有一個1~10000的范圍,那么我們使用for循環來限定范圍,這樣就在上面代碼的外面在套一層for循環:
<?php header("Content-type:text/html;charset=utf-8"); $num=6; 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>"; } } ?>
看看輸出結果:
那如果給定范圍很多,想要知道有多少完數怎么辦?可以在if語句中加一個計數器 $b,每輸出一個完數,$b就自增1。
<?php header("Content-type:text/html;charset=utf-8"); $num=6; $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的完數個數的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。