• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PHP循环学习十判定水仙花数,打印全部水仙花数

武飞扬头像
PHP中文网
帮助15

在之前的文章《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);
	$g= $num;
	
//	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

我们知道水仙花数是一个 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);
	$g= $num;
	
	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,在每次输出一个三位回文数后,自增1,这样就可以统计出100~999内有多少回文数了。

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tangbiceb
系列文章
更多 icon
同类精品
更多 icon
继续加载