php实现水仙花数的4个示例分享

  示例1:

  

复制代码 代码如下:

  <?php

  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>";

  }

  }

  }

  }

  ?>

  示例2:

  

复制代码 代码如下:

  <?php

  function cube( $n )

  {

  return $n * $n * $n;

  }

  function is_narcissistic ( $n )

  {

  $hundreds = floor( $n / 100);    //分解出百位

  $tens = floor( $n / 10 ) % 10;    //分解出十位

  $ones = floor( $n % 10 );    //分解出个位

  return (bool)(cube($hundreds)+cube($tens)+cube($ones) == $n);

  }

  for ( $i = 100; $i < 1000; ++ $i )

  {

  if ( is_narcissistic($i) )

  echo $i."\n";

  }

  ?>

  示例3:

  

复制代码 代码如下:

  <?php

  //阿姆斯特朗数:一个k位数,它的每个位上的数字的k次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)

  class Armstrong {

  static function index(){

  for ( $i = 100; $i < 100000; $i++ ) {

  echo self::is_armstrong($i) ? $i . '<br>' : '';

  }

  }

  static function is_armstrong($num){

  $s = 0;

  $k = strlen($num);

  $d = str_split($num);

  foreach ($d as $r) {

  $s += bcpow($r, $k);

  }

  return $num == $s;

  }

  }

  Armstrong::index();

  示例4:

  

复制代码 代码如下:

  <html>

  <head>

  <title></title>

  </head>

  <body>

  <?php

  function winter($num)

  {

  if($num<1000){

  //定义个位

  $ge=$num%10;

  //定义十位

  $ten=(($num%100)-$ge) /10;

  //定义百位

  /*floor取整,忽略小数点后面的所有数*/

  $hundred=floor($num/100);

  $sum1=$ge*$ge*$ge+$ten*$ten*$ten+$hundred*$hundred*$hundred;

  if($sum1==$num){

  return 1;

  } else{

  return 0;

  }

  } else{

  return -1;

  }

  }

  if(winter(371)==-1) {

  echo "大于1000的数";

  }else{

  if(winter(371)) {

  echo "Yes";

  }

  else{

  echo "No";

  }

  }

  ?>

  </body>

  </html>