1. 程式人生 > >Numpy攻略:尋找最大回文數

Numpy攻略:尋找最大回文數

迴文數指從左往右讀和從右往左讀都一樣的數字,我們尋找由兩個三位數相乘而獲得的最大回文數。
具體步驟:
1.建立一個由三位數構成的陣列
用numpy.testing包中的assert_equal函式,檢查陣列中的第一個元素和最後一個元素是否正確。
2.建立乘積陣列
建立一個數組,用來存放所有的可能的三位數的乘積。
outer函式:實現外積運算
sort方法:確保陣列元素已經正確的排序
之後,做一些正確性的檢查
程式碼如下圖:

import numpy
import numpy.testing
#迴文陣列從左往右讀和從右往左讀都一樣
#兩個兩位數相乘可獲得的最大回文數是9009=91x99
#尋找由兩個三位數相乘而獲得的最大回文數
#1.建立一個由三位數構成的陣列
a=numpy.arange(100,1000)
numpy.testing.assert_equal(100,a[0])
numpy.testing.assert_equal(999,a[-1])
#2.建立乘積陣列
numbers=numpy.outer(a,a)
numbers=numpy.ravel(numbers)
numbers.sort()
numpy.testing.assert_equal(810000,len(numbers))
numpy.testing.assert_equal(10000,numbers[0])
numpy.testing.assert_equal(998001,numbers[-1])
#3.查詢最大回文數
for i in range(-1,-1*len(numbers),-1):
    s=str(numbers[i])
    if s==s[::-1]:
        print(s)
        break

執行結果:906609