ホームページ >バックエンド開発 >PHPチュートリアル >PHP ループ学習 10: 水仙の数を決定し、すべての水仙の数を出力する

PHP ループ学習 10: 水仙の数を決定し、すべての水仙の数を出力する

青灯夜游
青灯夜游オリジナル
2021-08-16 11:39:167385ブラウズ

前回の記事「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);
?>

出力結果:

PHP ループ学習 10: 水仙の数を決定し、すべての水仙の数を出力する

上記の例では、

pow($b,3)$b*$b*$b は同等であり、どちらも立方体を計算できます。 $b の ( $b^3)。 pow(x,y)この関数は、x の y 乗、つまり x^y を返すことができます。

水仙の番号は 3 桁の数字であるため、割り当てがあることがわかっています。では、すべての水仙の番号を計算して出力するにはどうすればよいでしょうか?これにはループを使用する必要があります。

for ループを使用して範囲を 100 ~ 1000 に制限できます。記述方法:

<?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 个";
?>

出力を見てください:

PHP ループ学習 10: 水仙の数を決定し、すべての水仙の数を出力する

例外 すべての水仙の数を計算して出力する上記の方法では、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 个";
?>

出力結果を見てください:

PHP ループ学習 10: 水仙の数を決定し、すべての水仙の数を出力する

出力結果は同じであることがわかります。

for ループのループ本体でカウンター

$num を使用していることがわかります。3 桁の回文番号を出力するたびに 1 ずつ増加します。 100 から 999 までの間に回文が何個あるか数えてください。

わかりました。これですべてです。他に知りたいことがある場合は、これをクリックしてください。 → →

phpビデオチュートリアル

以上がPHP ループ学習 10: 水仙の数を決定し、すべての水仙の数を出力するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。