PHP循环学习十:判定水仙花数,打印全部水仙花数
时间:2021-08-27
来源:互联网
今天PHP爱好者为您带来在之前的文章《PHP循环学习九:获取给定两数间的最大公因数》中,我们给大家介绍了在PHP程序怎么通过while循环语句来求给定两个整数间的最大公约数,下面带大家来看看,给定一个三位整数,怎么判断该数是不是水仙花数?然后怎么输出全部水仙花数。希望对大家有所帮助。
本文主要带大家来看看,给定一个三位整数,怎么判断该数是不是水仙花数?然后怎么输出全部水仙花数。
首先我们来看看什么是水仙花数?
水仙花数是一个 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循环学习十:判定水仙花数,打印全部水仙花数的详细内容,更多请关注php爱好者其它相关文章!
-
异环二测什么时候-异环二测什么时候开始 时间:2025-05-14
-
币安APP怎么更新版本?-自动更新与手动升级教程 时间:2025-05-14
-
异环5月15日会有哪些动态-异环最新动态是什么 时间:2025-05-14
-
新月同行新玩法-官方“落子为城”新玩法 时间:2025-05-14
-
原神最新礼包兑换码-最新官方兑换码2025年5月13日 时间:2025-05-14
-
《“我只是想问个路”——然后就被拉着聊了半小时》 时间:2025-05-14
今日更新
-
PHP算法练习十:计算圆的半径和中心坐标
阅读:18
-
js中什么是变量提升?为什么会有变量提升?
阅读:18
-
手把手教你使用ps制作漂亮的星空创意头像海报(图文详解)
阅读:18
-
PHP hyperf如何配置yasd调试环境
阅读:18
-
分享golang和vue3开发的一个im应用
阅读:18
-
什么是CommonJS模块规范?Nodejs模块机制浅析
阅读:18
-
怎么通过PHP判断指定月份共有几天
阅读:18
-
通过PHP将给定的字符串进行复制并输出新字符串
阅读:18
-
通过PHP从指定范围内的两个正整数值中找出最大值
阅读:18
-
如何通过js返回大于指定数字的数组元素
阅读:18