零作為數字的歷史很短很短,宋朝數學里沒有零,元朝和明朝數學里也沒有零。小說家施耐庵生活在元末明初,他寫《水滸傳》,寫到梁山泊好漢人數,通常是“一百八人”或者“一百八員”。
例如該書第七十回,宋江先打東平府,再打東昌府,回到山寨,對眾弟兄說: “共聚得一百八員頭領,心中甚喜?!?/p>
再比如第七十一回,宋江率領大家在忠義堂對天盟誓,誓詞是這么說的:“宋江鄙猥小吏,無學無能,荷天地之蓋載,感日月之照臨,聚弟兄于梁山,結英雄于水泊,共一百八人……”
還有第八十二回,太尉宿元景回奏:“宋江等軍馬,俱屯在新曹門外,聽候圣旨。”宋徽宗說:“寡人久聞梁山泊宋江等有一百八人,上應天星……”
近現代說書人演繹《水滸傳》,張口閉口“一百零八條好漢”,這其實是清朝以后才有的說法,清朝以前只能是“一百八條 好漢”,沒那個“零”。20世紀初,考古人員在甘肅敦煌千佛洞發(fā)現唐朝數學文獻《立成算經》,里面記錄錢幣數字108 文,也是寫成“百八文” (圖1-1),而不是“一百零八文”。圖1-2 為日本早稻田大學圖書館所藏水滸畫冊: 《清陸謙畫水滸百八人像贊臨本》。
圖1-1 唐朝數學文獻《立成算經》
將108 文寫作“百八文”
▲圖1-2 《清陸謙畫水滸畫百八人像贊臨本》
我們必須說明,中國古籍里并不是沒有零,只不過,那些零的含義與數字無關。它們有時是“凋零”的零,有時是“零散” 的零,有時是“掛零”的零。它們可以有“滴落”的意思,可以有“細碎” 的意思,可以有“附加”的意思,卻沒有“一減一等于零,零加零還是零” 的意思。
其實,不只是古代中國沒有數字零,古希臘、古羅馬和古埃及也沒有數字零。在任何一個古典文明時代,一切數學概念和數學技能都是因為實際需要,才被發(fā)明出來的,而零在很長時期內都沒有被發(fā)明的必要。什么是零?不就是空無所有嗎?每個數字都被用來計算那些實實在在的東西,空無所有的東西憑什么需要數字呢?空無所有的數字怎么能夠進行計算呢?
數字被用來描述實有,虛空之物不需要數字,這是非常樸素的想法,自自然然,水到渠成。認識不到零很正常,認識到應該有零,那才叫稀奇古怪、異想天開。
沒有零,一樣記數和計算
現代人寫數字和做運算,絕對離不開零。11+19=30,一個零出來了。111- 11=100,兩個零出來了。古代中國、古希臘、古羅馬、古埃及都沒有零,先民們如何計算?如何進位?如何用數字表示幾十、幾百、幾千、幾萬呢?
早期文明的數字符號告訴我們,即使沒有零,一樣可以表示很大的數字,只不過表示方法要復雜一些。
以古埃及為例(圖1-3):1 的符號是一豎,像一根棍子;2 的符號是兩豎, 像兩根棍子;以此類推,3 是三根棍子,4 是四根棍子,5 是五根棍子……到了10,符號變成一道拱形(據說這個符號是一只踝骨),好像字母n,又像集合運算符號里計算交集的∩。然后呢? 11 是一道拱加一豎,12 是一道拱加兩豎,13 是一道拱加三豎……到了20,用兩道拱來表示;30 是三道拱,40 是四道拱,50是五道拱……100 呢?被寫成一個曲里拐彎的符號,仿佛缺了左下角的8,又仿佛是頭朝上的小蝌蚪。
比100 還要大的數字,古埃及人也能寫出來,例如1000 像一支火炬(也有人說這是一朵蓮花),1 萬像一根手指,10 萬是一只神鳥,100 萬是一個單膝跪地、雙手投降、仿佛被這個巨大數字嚇怕了的人(圖1-4)。
▲圖1-3 古埃及數字:1 到100
▲圖1-4 古埃及數字:1 到100 萬
古埃及人如果要寫1023047 這個數字,會畫一個受驚嚇的人,表示100 萬; 再畫兩根手指,表示2 萬;再畫三支火炬,表示3000;再畫四個拱形,表示40;最后畫七根棍子,表示7。整個數字寫出來,會是如圖1-5 的樣子。
▲圖1-5 用古埃及數字表示1023407
古埃及數字是象形符號,古希臘和古羅馬則用字母表示數字(圖1-6)。在古希臘,1 寫成Α,2 寫成Β,3 寫成Γ,4 寫成Δ,5 是Ε,6 是,7 是Ζ, 8 是Η,9 是θ,10 是Ι,11 是ΙΑ,12 是ΙΒ,13 是ΙΓ,14 是ΙΔ…… 20 寫成Κ,21 寫成ΚΑ,22 寫成ΚΒ,23 寫成ΚΓ,100 寫成Ρ。如果想寫108,那就是ΡΗ,中間不需要一個表示零的符號。
▲圖1-6 古希臘數字與阿拉伯數字對照表
相對而言,我們對古羅馬數字更加熟悉,生活當中也能見到它們。在一些鐘表上,從1 點鐘到12 點鐘,分別用Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ、Ⅶ、Ⅷ、Ⅸ、Ⅹ、Ⅺ、Ⅻ來表示。而那些稍大一些的數,會被寫成不同的字母或者字母組合,例如50 是L,100 是C,500 是D。古羅馬人想記錄一個數字,先看這個數能不能對應一個現成的字母,如果不能,那么分解這個數,把它分解成幾個字母(圖1-7)。
▲圖1-7 古羅馬數字與阿拉伯數字對照表
比如說,要寫100,用一個字母C 就行。要寫200,就得寫成CC。寫230呢? 因為230 等于100+100+30, 而30 又等于10+10+10,100 的對應字母是C,10 的對應字母是X,所以230 被記作CCXXX。再比如732,可以分解成500+100+100+10+10+10+2,其中500 用D 表示,100 用C 表示,10 用X,2 用Ⅱ,732 會被寫成DCCXXX Ⅱ。像這樣的數字系統,記錄繁瑣,識別易錯,計算之時更加令人頭疼(不能像阿拉伯數字那樣將不同數字的相同數位對應起來,以便加減乘除),但自始至終都不需要有零參與。