前回の記事「PHPループ学習7:9*9の早計算表を印刷する2つの方法」では、forループとwhileループを使って99の九九を印刷する方法を紹介しました。引き続き、PHP ループを理解し、与えられた数値が完全な数であるかどうかを判断する方法を紹介します。興味のある友達はそれについて学ぶことができます~
まずは理解しましょう完全数とは何ですか?
##完全数 フルネーム完全数、数値が因数の合計と正確に等しい場合、その数値は「完全数」数値と呼ばれます」。 (因数はそれ自体以外の約数を指します。)
例: 6=1 2 3、6 は完全数です。では、数値 num (たとえば、6) が与えられた場合、数値 num が完全であるかどうかをどのように判断するのでしょうか?
アイデア:i=1; に設定され、除数を num そのものにすることはできないため、制限条件はi<num><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$num=6;
for($i=1;$i<$num;$i++){
if($num%$i==0){//分解因数
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div></p>2. 因数を見つけたら、これらの因数を追加して合計する必要があります。これには、計算結果を受け取る変数 $sum が必要ですが、加算であるため、$sum には最初に値 0 を割り当てることができます。 <p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$num=6;
$sum=0;
for($i=1;$i<$num;$i++){
if($num%$i==0){//分解因数
$sum=$sum+$i; //各因数相加,求和
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div></p>3. $sum と $num が等しいかどうかを確認します。等しい場合、$num は完全な数値です。 <p></p>実装コードは以下のとおりです: <p><br/><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?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 是完数!";
}
?></pre><div class="contentsignin">ログイン後にコピー</div></div></p>出力を見てください: <p></p><p><img src="https://img.php.cn/upload/image/870/583/516/1628836202809590.png" title="1628836202809590.png" alt="PHP ループ学習 8: 1 から 10,000 までの完全数の数を数え、すべての完全数を出力する"/></p>これで、次のことを確認する方法がわかりました。カウントが完全ではありません。難易度を上げてみましょう: <p>指定された範囲 (1 ~ 10000 だけ) 内の完全な数値をすべて出力します。 <strong></strong></p>分析: 1 ~ 10000 の範囲があるため、for ループを使用して範囲を制限し、for ループが上記のコードの外側に配置されます: <p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?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>";
}
}
?></pre><div class="contentsignin">ログイン後にコピー</div></div></p>出力を見てください: <p></p><p><img src="https://img.php.cn/upload/image/994/346/406/1628836988697320.png" title="1628836988697320.png" alt="PHP ループ学習 8: 1 から 10,000 までの完全数の数を数え、すべての完全数を出力する"/></p>#指定された範囲が多数あり、完全な数値がいくつあるかを知りたい場合はどうすればよいでしょうか。 if 文にカウンター $b を追加すると、完全な数値が出力されるたびに $b が 1 ずつ増加します。 <p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?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 个完数。";
?></pre><div class="contentsignin">ログイン後にコピー</div></div></num>
推奨: PHP 面接の質問の要約 (コレクション)>>
以上がPHP ループ学習 8: 1 から 10,000 までの完全数の数を数え、すべての完全数を出力するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。