水仙花

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。

编写一个php函数测试输入的数字是否为水仙花数。(提示:不能将数字当作字符串处理),函数原型为:

flower($n)  $n为任意正整数 返回 true/false

 1 //找出范围内 所有位数一样的 数字
 2 public function day2(){
 3    //传入的参数
 4    $num = 10000;
 5    //存储符合要求的数组
 6    $arr = [];
 7    //循环数据
 8    for($i=10;$i<=$num;$i++){
 9       self::$ws = [];
10       $this->weishu($i);
11       $count = array_count_values(self::$ws);
12       if(sizeof($count) == 1){
13          $arr[] = $i;
14       }
15    }
16 
17    print_r($arr);
18 }
19 public function shuixianhua(){
20    //输入的参数
21    $n = 153;
22    
23    //分割个十百位数
24    $this->weishu($n);
25    
26    //水仙花数判断
27    $gewei = self::$ws[0] * self::$ws[0] * self::$ws[0];
28    $shiwei = self::$ws[1]*self::$ws[1]*self::$ws[1];
29    $baiwei = self::$ws[2]*self::$ws[2]*self::$ws[2]; 
30    $num = $gewei + $shiwei + $baiwei;
31    if($num == $n){
32       return $n.'是水仙花数!';
33    }else{
34       return $n.'不是水仙花数!';
35    }
36 }
37 static $ws = [];
38 //计算输入的数值的每位数字
39 public function weishu($n){
40    if($n > 9){
41       self::$ws[] = $n % 10;
42       $this->weishu(intval($n/10));
43    }else{
44       self::$ws[] = $n;
45    }
46 }
47 
48 //个位+百位=十位 的判断方法
49 public function panduan(){
50    $num = 456;
51    
52    $gewei = $num % 10;
53    $shiwei = intval($num / 10) % 10;
54    $baiwei = intval($num / 100);
55    
56    if($gewei+$baiwei == $shiwei){
57       echo '验证成功';
58    }else{
59       echo '验证失败';
60    }
61 }
原文地址:https://www.cnblogs.com/songbao/p/11158886.html