前回の記事「PHP ループ学習 9: 指定された 2 つの数値間の最大公約数を取得する 」では、PHP で while ループ ステートメントを使用して指定された 2 つの数値を求める方法を紹介しました。 2 つの整数間の最大公約数、PHP ループについて学び続けましょう~
この記事では主に、与えられた 3 桁の整数に対して、その数値が水仙数であるかどうかを判断する方法を示します。次に水仙の総数を出力する方法です。
まずは見てみましょう水仙番号とは何ですか?
水仙数字は 3 桁の数字で、各桁の数字の 3 乗の合計はそれ自体に等しくなります (例: 1^3 5^3 3^3 = 153) )。
まず、指定された 3 桁の数字が水仙数字であるかどうかを判断する方法を見てみましょう。
アイデア分析:
上記のことから、次のことがわかります: 数値 $num
が水仙数値である場合、それは次のとおりです。満たす: 一の位の 3 乗 十の位の 3 乗 百の位の 3 乗 = $num 自体
次に、最初に $num# を分解できます。 ## 桁
$g、十の桁
$s、百の桁
$b
$g^3 $ を判断します^3 $b ^3 それは
$num
<?php header("Content-type:text/html;charset=utf-8"); function is_narcissistic ( $num ){ $b= intval($num/100); $s= ($num/10)%10; $g= $num%10; // if($b*$b*$b+$s*$s*$s+$g*$g*$g==$num){ 等价于 if(pow($b,3)+pow($s,3)+pow($g,3)==$num){ echo $num."是水仙花数<br>"; }else{ echo $num."不是水仙花数<br>"; } } is_narcissistic(153); is_narcissistic(152); ?>出力結果:
上記の例では、
pow($b,3) と
$b*$b*$b は同等であり、どちらも立方体を計算できます。 $b の (
$b^3)。
pow(x,y)この関数は、x の y 乗、つまり
x^y を返すことができます。
<?php header("Content-type:text/html;charset=utf-8"); $i=0; for ( $num = 100; $num < 1000; $num++){ $b= intval($num/100); $s= ($num/10)%10; $g= $num%10; if(pow($b,3)+pow($s,3)+pow($g,3)==$num){ echo $num."<br>"; $i++; } } echo "水仙花数共有 $i 个"; ?>出力を見てください: 例外 すべての水仙の数を計算して出力する上記の方法では、3 つの for ループを使用して各桁をたどってすべての水仙の数を出力することもできます:
<?php header("Content-type:text/html;charset=utf-8"); $i=0; for($q=1;$q<=9;$q++){ for($w=0;$w<=9;$w++){ for($e=0;$e<=9;$e++){ if($q*$q*$q + $w*$w*$w + $e*$e*$e == 100*$q + 10*$w + $e){ echo "$q $w $e "."<p>"; $i++; } } } } echo "水仙花数共有 $i 个"; ?>出力結果を見てください:
出力結果は同じであることがわかります。 for ループのループ本体でカウンター
$num を使用していることがわかります。3 桁の回文番号を出力するたびに 1 ずつ増加します。 100 から 999 までの間に回文が何個あるか数えてください。
以上がPHP ループ学習 10: 水仙の数を決定し、すべての水仙の数を出力するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。