學習軌道
/
Python
Python
/
練習
/
畢氏三元組
畢氏三元組

畢氏三元組

簡單

簡介

你是一位成就非凡的解題高手,以能攻克最艱難的數學謎題而聞名。 某天晚上,你收到一封來自發明家 Triangle Tinkerer 的急件,他正在進行一項劃時代的新計畫。 信中寫道:

親愛的數學家:

我需要你的幫助。 我正在設計一個裝置,它仰賴畢氏三元組的獨特性質,也就是能滿足方程式 a² + b² = c² 的三個整數。 這個裝置將徹底改變導航技術,但要讓它運作,我必須把每一組可能的畢氏三元組都寫進程式裡,其中 a、b、c 三數之和必須等於某個特定的數字 N。 用手算出這些三元組得花上好幾年,但我聽說你絕對能勝任。

時間緊迫。 我的發明能否成功,甚至數學創新的未來,都取決於你能否解開這個問題。

受到這項任務的重要性所激勵,你開始著手找出所有符合條件的畢氏三元組。 你的成果可能影響深遠,為科學與工程開啟全新的可能性。 你能迎接挑戰,寫下歷史嗎?

說明

畢氏三元組是由三個自然數 {a, b, c} 組成的一組數,滿足

a² + b² = c²

且滿足

a < b < c

例如,

3² + 4² = 5².

給定一個輸入整數 N,找出所有滿足 a + b + c = N 的畢氏三元組。

例如,當 N = 1000 時,恰好有一組畢氏三元組滿足 a + b + c = 1000:{200, 375, 425}。

Note

上面的說明提到了數學集合,但也提到畢氏三元組 {a, b, c} 必須 按照 a < b < c 的順序排列(遞增順序)。

這使得 Python 的set型別不適合這個練習,因為它本質上是_無序_的。 你應該改為回傳一個由list組成的list(例如 [[a, b, c]])。 你可以用任何你喜歡的順序產生這些三元組,因為外層list的順序在測試中會被忽略。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Python Exercism

準備好開始 畢氏三元組 了嗎?

註冊 Exercism,透過 17 個概念146 個練習 和真人引導來學習並精通 Python,全部免費。