寻找《水仙花数》的Mathematica算法剖析

 时间:2026-02-13 20:53:06

1、Table[If[({a, b, c}^3 // Total) == FromDigits[{a, b, c}], 

    FromDigits[{a, b, c}], 0], {a, 1, 9}, {b, 0, 9}, {c, 0, 9}] // 

  Flatten // Union

得到四个三位数的水仙花数。

寻找《水仙花数》的Mathematica算法剖析

2、FromDigits[{a, b, c}]的作用是把三个数字串成一个数。

寻找《水仙花数》的Mathematica算法剖析

3、{a, b, c}^3 // Total

计算a、b、c的立方和。

寻找《水仙花数》的Mathematica算法剖析

4、用If语句作出判断:

If[({a, b, c}^3 // Total) == FromDigits[{a, b, c}], FromDigits[{a, b, c}], 0]

如果a, b, c的立方和等于a, b, c串成的数字,那么这个数字就是三位数的水仙花数,保留下来;

否则,用0代替。

寻找《水仙花数》的Mathematica算法剖析

5、让a, b, c分别遍历0到9:

Table[If[({a, b, c}^3 // Total) == FromDigits[{a, b, c}], 

  FromDigits[{a, b, c}], 0], {a, 1, 9}, {b, 0, 9}, {c, 0, 9}]

注意,a等于0没意义,不是三位数了。

寻找《水仙花数》的Mathematica算法剖析

6、把结果提取出来:

Table[If[({a, b, c}^3 // Total) == FromDigits[{a, b, c}], 

    FromDigits[{a, b, c}], 0], {a, 1, 9}, {b, 0, 9}, {c, 0, 9}] // 

  Flatten // Union

寻找《水仙花数》的Mathematica算法剖析

7、查看计算时间:

Table[If[({a, b, c}^3 // Total) == FromDigits[{a, b, c}], 

     FromDigits[{a, b, c}], 0], {a, 1, 9}, {b, 0, 9}, {c, 0, 9}] // 

   Flatten // Union // AbsoluteTiming

用时不超过0.004秒。

寻找《水仙花数》的Mathematica算法剖析

8、用时0.03秒,可以找到全部三个四位数水仙花数:

Table[If[({a, b, c, d}^4 // Total) == FromDigits[{a, b, c, d}], 

     FromDigits[{a, b, c, d}], 0], {a, 1, 9}, {b, 0, 9}, {c, 0, 9}, {d, 0, 9}]

     // Flatten // Union // AbsoluteTiming

寻找《水仙花数》的Mathematica算法剖析

9、用时0.269秒左右,找到全部三个五位数水仙花数:

Table[If[({a, b, c, d, e}^5 // Total) == FromDigits[{a, b, c, d, e}], 

     FromDigits[{a, b, c, d, e}], 0], {a, 1, 9}, {b, 0, 9}, {c, 0, 9},

     {d, 0, 9}, {e, 0, 9}] // Flatten // Union // AbsoluteTiming

寻找《水仙花数》的Mathematica算法剖析

10、6位数的水仙花数只找到一个:

Table[If[({a, b, c, d, e, f}^6 // Total) == 

      FromDigits[{a, b, c, d, e, f}], FromDigits[{a, b, c, d, e, f}], 

     0], {a, 1, 9}, {b, 0, 9}, {c, 0, 9}, {d, 0, 9}, {e, 0, 9}, {f, 0,

      9}] // Flatten // Union // AbsoluteTiming

耗时将近3秒左右。

寻找《水仙花数》的Mathematica算法剖析

  • 魔灵召唤深渊征服者在哪里打
  • 精灵盛典手游装备属性怎么转移?
  • 国家电网网申常见问题的应对思路(技巧)
  • 清除衣物污渍的小技巧
  • 华硕V555LB内存条型号?加内存需要加什么型号?
  • 热门搜索
    胃痉挛怎么缓解 皮皮虾怎么清洗 电源已接通未充电怎么办 福特野马怎么样 怎么建一个新的微信群 足三里怎么找 优点怎么写 医保怎么交费 我的世界梯子怎么做 圆柱的体积怎么算