이전 글 "PHP 루프 학습 9: 주어진 두 숫자 사이의 최대 공약수 얻기"에서 PHP 프로그램 Number에서 주어진 두 정수 사이의 최대 공약수를 찾기 위해 while 루프 문을 사용하는 방법을 소개했습니다. , PHP 루프에 대해 계속 배워봅시다~
이 글에서는 주로 세 자리 정수가 주어졌을 때 그 숫자가 수선화인지 판별하는 방법을 보여줍니다. 그런 다음 총 수선화 수를 출력하는 방법입니다.
우선 살펴볼까요수선화수란 무엇인가요?
수선화 숫자는 3자리 숫자이며, 각 숫자의 3제곱의 합은 그 자체와 같습니다(예: 1^3 + 5^3+ 3^3 = 153).
먼저 주어진 세 자리 숫자가 수선화인지 판별하는 방법을 살펴보겠습니다.
사고 분석:
위에 따르면 우리는 다음을 알고 있습니다. 숫자 $num
가 수선화 수라면 다음을 충족해야 합니다. 1의 3승 + 십의 자리 3승 + 백의 3승 = $num 자체
$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
$num
를 분해하여 일의 자리 $g,
십을 얻을 수 있습니다. 숫자 $s
, 백 자리 $b
그런 다음 $g^3 + $^3 +$b^3
가 같은지 확인합니다. to $num
pow($b,3)
및 $ b*$b*$b
는 동일하며 $b($b^3
)의 세제곱을 계산할 수 있습니다. pow(x,y)
함수는 x의 y제곱, 즉 x^y
를 반환할 수 있습니다. 🎜🎜우리는 수선화 숫자가 3자리 숫자라는 것을 알고 있으므로 할당량이 있습니다. 그렇다면 모든 수선화 숫자를 어떻게 계산하고 출력할까요? 이를 위해서는 루프를 사용해야 합니다. 🎜🎜for 루프를 사용하여 범위를 100에서 1000 사이로 제한할 수 있습니다. 작성 방법: 🎜rrreee🎜출력 결과 보기: 🎜🎜🎜🎜모든 수선화 수를 계산하고 출력하는 위의 방법 외에도 3개의 for 루프를 사용할 수도 있습니다. 각 숫자를 탐색하여 출력합니다. 모든 수선화의 수: 🎜rrreee🎜출력을 살펴보세요: 🎜🎜🎜🎜출력 결과가 동일함을 알 수 있습니다. 🎜🎜for 루프의 루프 본문에 카운터 $num
를 사용한 것을 볼 수 있는데, 매번 세 자리 회문 숫자를 출력한 후 1씩 증가하여 100이 될 수 있습니다. ~999 안에는 몇 개의 회문이 있습니까? 🎜🎜그렇습니다. 더 알고 싶다면 여기를 클릭하세요. → →🎜php 비디오 튜토리얼🎜🎜위 내용은 PHP 루프 학습 10: 수선화의 수를 확인하고 모든 수선화의 수를 출력합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!