PHP循環學習十:判定水仙花數,列印全部水仙花數

青灯夜游
發布: 2023-04-10 15:18:02
原創
7344 人瀏覽過

在先前的文章《PHP迴圈學習九:取得給定兩數間的最大公因數》中,我們為大家介紹了在PHP程式怎麼透過while迴圈語句來求給定兩個整數間的最大公約數,以下繼續php循環的學習~

本文主要帶大家來看看,給定一個三位整數,怎麼判斷該數是不是水仙花數?然後怎麼輸出全部水仙花數。

首先我們來看看什麼是水仙數?

水仙數是一個 3 位數,它的每個位上的數字的3次方和等於它本身(例如:1^3 5^3 3^3 = 153) 。

下面我們先來看看怎麼判斷給定的一個三位數,它是不是水仙花數?

想法分析:

根據上文我們知道:一個數字$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循環學習十:判定水仙花數,列印全部水仙花數

上例中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循環學習十:判定水仙花數,列印全部水仙花數

##除了上面計算並輸出所有水仙花數的方法,也可以使用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循環學習十:判定水仙花數,列印全部水仙花數##可以看出,輸出結果是一樣的。

可以看出,我們在for迴圈的迴圈體中,使用一個計數器

$num

,在每次輸出一個三位回文數後,自增1,這樣就可以統計出100~999內有多少回文數了。 好了就說到這裡了,有其他想知道的,可以點選這個喔。 → →

php影片教學

#

以上是PHP循環學習十:判定水仙花數,列印全部水仙花數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板