這題對 python 來說,有幾個比較關鍵的步驟要處理
建表,取得 1000 以內所有的質數列表,考慮到測資可能有數筆,每次都要重新計算有哪些質數很浪費時間。
你可以自己徒手打,或複製貼上,一共有 168 個。
也可以讓程式自己求這些質數,你可以使用試除法,遍歷 1000 以內的所有數,並檢查該數是否能被任一一個不為 1 且比他小的數整除。
又或是使用質數篩法,詳細自行搜尋關鍵字「埃拉托斯特尼質數篩法」
根據題意,每列最多輸出 5 個質數
你可以土法煉鋼,一個一個數,數到第 5 個數字才輸出換行符,然後歸零,進入下個循環
或更深入利用 python 的特性
參考官方文檔中關於 itertools 的介紹,最下方有關於 more-itertools 的範例,找到一個叫 grouper 的函數
根據說明,這個函數可以將一個可迭代元素根據傳入的值進行切割
你不需要導入 more-itertools,實際上你也導不了,因為這不是內建的
但你也不需要把這個函數完全複製貼上過來,我們用不到他的完全體
觀察這個東西,他有三種模式,分別為 full、strict、ignore 三種模式,這邊我們需要的是 full 模式,而使用 full 模式需要使用一個叫 zip_longest 的函數,這個函數需要導入 itertools 才能使用
把我們真正區要的東西拿出來就行了
def grouper(iterable, n):
|
怎麼用它就看個人造化