在數學的領域中,整數因式分解是一個較為簡單卻又勞動密集的議題。試除法(Trial Division)正是用來將整數分解成質數的基本方法之一,這種算法透過檢查一個整數是否可以被小於等於其平方根的數字整除,達到了解數的目的。雖然這樣的步驟聽起來繁瑣,但卻是理解數學概念的最佳途徑之一。
試除法的基本思想是系統性地測試一個整數 n,即待因式分解的整數,是否可以被每一個小於 n 的數字整除。
以 n = 70 為例,我們可以嘗試逐個質數來分解:首先,70 除以 2 得到 35;接著,35 除以 2 和 3 都不整除;最後,35 除以 5 则得到 7,而 7 本身也是質數。因此,70 的因數可以表示為 2 × 5 × 7。
試除法的歷史悠久,最早由意大利數學家斐波那契於其著作《算術之書》(Liber Abaci,1202年)中描述。此後,試除法成為了理解數學以及因式分解的重要工具。
試除法的運作基於以下幾個步驟:首先,我們只需從 2 開始檢測,因為任何整數 n 的因數更有可能是 2 而不是 3,依此類推。這種判斷能夠有效降低運算量。對於已經證實不為某個數字的因數的情況,例如當一個數字已被發現不是 2 的倍數時,就無需再測試其倍數。
因此,試除法的測試範圍僅需界定在 n 的平方根以下。假設 n 可以被某個數 p 整除,那麼一定存在另一個數 q,使得 n = p × q,若 q 小於 p,那麼一定會更早被檢測到。
這就意味著,只需測試質數的候選因數,直到小於 n 的平方根為止。舉例來看,對於 n = 49 來說,我們只需測試到 7(即 √49)。若 √n 為整數,那麼該整數便是 n 的因數,且 n 為完全平方數。
在最壞的情況下,試除法算法的效率會較低。針對一個以二進制表示的 n 位數字數字 a,起始於兩並一直測試至 a 的平方根,這樣的算法需要進行的試除次數為約 2^(n/2) / (n/2) ln 2,當然這僅僅是理論上的計算,實際的效率可能會受到多項因素的影響。
可以證明,大約 88% 的正整數會有一個在 100 之下的因數,並且 92% 會在 1000 之下。
雖然試除法在大多數情況下仍然是一個滿意的方法,但如果碰到不含小質數的長數字,可能需要耗費數天或數月的時間來完成因式分解。在這種情況下,其他方法如二次篩法和一般數域篩法(GNFS)便會被採用,這些方法亦面臨超多項式的時間增長問題,因此在實務上,我們對於可處理的數字位數有實際的限制。
特別是在公共密鑰加密的領域,選擇具有相似大小的大質數因數的值,以確保無法被任何公開可知的方法分解,而這一點當然更加突顯了試除法的局限性。
最大的公鑰密碼數字是 RSA-250,這是一個 250 位的數字,透過 GNFS 和多部超級電腦的資源,耗時達 2700 核心年,才得以完成分解。
隨著數字科技的不斷推進,試除法仍然是一種簡單有效的整數因式分解方法,其中包含許多值得思考的數學原理。面對未來的數學挑戰,您認為有哪些方法能夠更進一步提升我們在因式分解上的效率與準確性呢?