Numpy攻略:尋找最大回文數
阿新 • • 發佈:2018-12-05
迴文數指從左往右讀和從右往左讀都一樣的數字,我們尋找由兩個三位數相乘而獲得的最大回文數。
具體步驟:
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