跳轉到

第 1 章 歐幾里得與花拉子密:古代幾何邏輯與「演算法」詞彙的誕生#

本章導言#

演算法的第一個黃金時代不在計算機時代,而在古代地中海與伊斯蘭世界。本章三節:1.1 歐幾里得輾轉相除法;1.2 花拉子密與「algorithm」的字源;1.3 算盤與阿拉伯數字的計算基礎設施。


1.1 歐幾里得(Euclid)與輾轉相除法:公元前 3 世紀《幾何原本》裏流傳兩千年的最大公因數尋找藝術#

1.1.1 一條被寫進文明基因的程序#

《幾何原本》(約公元前 300 年)第七卷命題 I–II 給出求兩數最大公因數的方法:以小除大取餘,再以餘除除數,輾轉直至餘為零。用現代偽碼寫出:

while b ≠ 0:
    (a, b) ← (b, a mod b)
return a

這是現存最早、且至今仍在使用的演算法之一——1969 年 Knuth 的《計算機程式設計藝術》開篇即以它示範什麼是演算法。其效率有保證:最壞情形相鄰斐波那契數,步數約為輸入位數的 5 倍(拉梅定理,1844)。

1.1.2 為什麼它是「演算法」而非「技巧」#

《幾何原本》的體系是公理—定義—命題—證明:輾轉相除法附有正確性證明(以更相減損術終止性論證),輸入任意、步驟有限、結果唯一——完整滿足今日演算法的定義。這說明演算法的本質要件(明確性、有限性、正確性)在兩千三百年前已被寫下。

1.1.3 傳播與再生#

  • 婆羅摩笈多(628 年)與花拉子密(9 世紀)吸收印度與希臘算術,把「步驟化」推向代數;
  • 斐波那契《計算之書》(1202)把阿拉伯記數與此類程序帶入歐洲商業;
  • 1960 年代,Stein 以二進制移位改寫(binary GCD),輾轉相除法進入硬體與編譯器優化——古老程序持續演化。

1.1.4 前因後果#

  • 前因:巴比倫六十進制與埃及單位分數的計算傳統+希臘公理化思潮(泰勒斯、畢達哥拉斯)。
  • 事件:約前 300 年《幾何原本》成書,亞歷山大圖書館成為知識中介。
  • 後果:公理化+程序化的雙重傳統被伊斯蘭數學繼承,直接通往 1.2 花拉子密的代數革命。

下一節:1.2 花拉子密