2016-08-24
<?php
//打印水仙花数:所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
//方法一:拆分法
for ($i=100;$i<=999;$i++):
$baiwei =$i/100; //取百位
$shiwei =($i%100)/10;//取十位
$gewei =($i%10);//取个位
$a=(int)$baiwei;//取整数
$b=(int)$shiwei;
$c=(int)$gewei;
$m=pow($a,3)+pow($b,3)+pow($c,3);
if($m==$i):
echo $i."<br>";
endif;
endfor;
echo '<hr>';
//方法二:将数字强制转换为字符串,然后当成数组去下标。
for ($i=100;$i<=999;$i++)
{
$x=(string)$i;
$a=$x[0];
$b=$x[1];
$c=$x[2];
$n=pow($a,3)+pow($b,3)+pow($c,3);
if($n==$i)
{
echo $i."<br>";
}
}
echo '<hr>';
//三重循环:组合法
for($a=1;$a<=9;$a++)
{
for($b=0;$b<=9;$b++)
{
for($c=0;$c<=9;$c++)
{
if(pow($a,3)+pow($b,3)+pow($c,3)==$a*100+$b*10+$c)
{
$d=$a*100+$b*10+$c;
echo $d.'<br>';
}
}
}
}
echo '<hr>';
//截取字符串法
for($i=100;$i<=999;$i++)
{
$x=(string)$i;
$a=substr($x,0,1);
$b=substr($x,1,1);
$c=substr($x,2,1);
if(pow($a,3)+pow($b,3)+pow($c,3)==$i)
{
echo $i.'<br>';
}
}
?>