这篇文章主要介绍了如何使用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); ?>
输出结果:
上例中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 个"; ?>
看看输出结果:
除了上面计算并输出所有水仙花数的方法,还可以使用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循环判定水仙花数并打印全部水仙花数”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。