寻找回文数,回文数是指从左往右读和从右往左读都一样的数字。两个两位数相乘,可获得的最大回文数是9009=91×99。让我们试着寻找由两个三位数相乘而获得的最大回文数。
具体步骤
我们将使用NumPy中的arange
函数,创建一个包含全部三位数字(100~999)的数组。
- 创建一个由三位数构成的数组。
用numpy.testing包中的assert_equal
函数,检查数组中的第一个和最后一个元素是否正确。
- 创建乘积数组。
我们将创建一个数组,用来存放所有可能的三位数两两相乘的结果。可以用outer
函数实现这个外积运算,再把得到的数组用ravel
函数展开,以便进行查找。还需要调用数组对象的sort
方法,确保数组元素已正确排序。之后,我们可以做一些正确性检查。
完整代码如下。
这段代码的执行结果是显示出906609这个回文数。
小结
我们看到了outer
函数的实际应用,该函数返回的是两个数组的外积。sort
函数返回的是某个数组排序后的副本。