欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php实现水仙花数的4个例子

程序员文章站 2022-04-28 19:18:05
...

什么是水仙花数?

水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。 (例如:1^3 + 3^3+ 5^3 = 153),本文收集了php实现水仙花数的4个例子。

例1,php实现水仙花数:

  1. for($q=1;$q for($w=0;$w for($e=0;$e if($q*$q*$q + $w*$w*$w + $e*$e*$e ==
  2. 100*$q + 10*$w + $e){
  3. echo "$q $w $e "."

    ";

  4. }
  5. }
  6. }
  7. }
  8. ?>
复制代码

例2,php实现水仙花数:

  1. function cube( $n )

  2. {
  3. return $n * $n * $n;
  4. }
  5. function is_narcissistic ( $n )

  6. {
  7. $hundreds = floor( $n / 100); //分解出百位
  8. $tens = floor( $n / 10 ) % 10; //分解出十位
  9. $ones = floor( $n % 10 ); //分解出个位
  10. return (bool)(cube($hundreds)+cube($tens)+cube($ones) == $n);
  11. }
  12. for ( $i = 100; $i {
  13. if ( is_narcissistic($i) )
  14. echo $i."\n";
  15. }
  16. ?>
复制代码

例3,php实现水仙花数:

  1. //阿姆斯特朗数:一个k位数,它的每个位上的数字的k次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
  2. class Armstrong {
  3. static function index(){
  4. for ( $i = 100; $i echo self::is_armstrong($i) ? $i . '
    ' : '';
  5. }
  6. }
  7. static function is_armstrong($num){
  8. $s = 0;
  9. $k = strlen($num);
  10. $d = str_split($num);
  11. foreach ($d as $r) {
  12. $s += bcpow($r, $k);
  13. }
  14. return $num == $s;
  15. }
  16. }
  17. Armstrong::index();
复制代码

例4,php实现水仙花数:

  1. php实现水仙花数_bbs.it-home.org
  2. function winter($num)
  3. {
  4. if($num //定义个位
  5. $ge=$num%10;
  6. //定义十位
  7. $ten=(($num%100)-$ge) /10;
  8. //定义百位
  9. /*floor取整,忽略小数点后面的所有数*/
  10. $hundred=floor($num/100);
  11. $sum1=$ge*$ge*$ge+$ten*$ten*$ten+$hundred*$hundred*$hundred;
  12. if($sum1==$num){
  13. return 1;
  14. } else{
  15. return 0;
  16. }
  17. } else{
  18. return -1;
  19. }
  20. }
  21. if(winter(371)==-1) {
  22. echo "大于1000的数";
  23. }else{
  24. if(winter(371)) {
  25. echo "Yes";
  26. }
  27. else{
  28. echo "No";
  29. }
  30. }
  31. ?>
复制代码