無限循環小數


引言

歡迎光臨本網頁。在這個網頁中,你可以學習到「無限循環小數」的概念。你亦可用本人編寫的應用程式做有 關無限循環小數的「數學實驗」。

把分數化為無限循環小數

從小學低年班開始我們便學習分數和小數(這裡指有限位小數),並且認識到兩者之間可以互相轉換。把分數轉 換成小數實際上就是做除法。我們在小學學習除法時,很早便發現做除法可能有兩種結果,有些如10/4在小數 點後若干位便「除得盡」,有些則如10/3是永遠「除不盡」的。我們也認識到,某些分數即使除不盡,它們也 可能表現為一個無限循環小數,例如10/3=3.333...(註1)。其實,如果我們把「除得盡」的分數也看成是無限 循環小數(例如10/2=5.000...),那麼我們可以把所有「規則」的分數都歸為無限循環小數。接下來我們要問, 是否存在「不規則」的分數,即是否存在不能表達為無限循環小數的分數呢?

在小學我們都學過圓周率π可以取22/7這個分數作為近似值。那麼22/7是否無限循環小數呢?假如我們用普通 的計算機算一下,發現22/7的近似結果是3.142857,似乎不循環。那麼22/7是否就是一個「不規則」分數呢? 答案是否定的。其實,如果我們有足夠的耐性,把22/7繼續算下去,我們便會發現這個分數從小數點後第7位便 開始循環。這即是說,22/7實際是一個無限循環小數:

22 / 7 = 3.142857142857142857...

如果我們細心觀察一下22/7的演算過程,我們便會明白為何這分數必然是循環的。在計算22/7的第一步驟中, 我們先得商3和餘數1。接著我們把餘數1倍大為10,然後計算10/7,得商1和餘數3。接著我們把餘數3倍大為30 ,然後計算30/7,得商4和餘數2。接著我們又把餘數2倍大為20,然後計算20/7......如此類推。因此,在計算 22/7時,我們實際上是在不斷做10/7或20/7或30/7...。可是,由於任何數除以7所得的餘數只有7種可能(即0、 1、2、3、4、5和6)(註2),這樣下去必然會重複出現之前的計算。當出現重複時,接著下來的計算便會跟之前 做過的計算一模一樣,因而出現循環小數的情況。例如,在22/7的運算中,當計算至小數點後第6位時,得商7 和餘數1,接著我們把餘數1倍大為10,然後計算10/7,但是此一計算在之前已做過,接下來的計算結果必然是 142857,因此22/7必然是不斷重複出現142857這組數字的循環小數。

把上述討論推廣至一般情況,那麼由於任何整數除以整數n,其餘數只有n種可能(即0、1、2...、n - 1),因此 在進行任何整數除法時,在運算至某一階段時,必然會重複出現之前做過的運算,這時就必定重複出現之前的 計算結果,即無限循環小數。換句話說,任何分數(在高等數學中稱為「有理數」Rational Number)都必然是無 限循環小數。

根據上段討論,我們還可推算出,任何整數除以整數n,最遲至小數點後第n位便必定會開始出現循環。例如在 22/7的運算中,其結果便在小數點後第7位開始出現循環。不過,n只是一個上限(即最差情況),並非所有除法 結果都會出現此「最差」情況。例如1/3的結果在小數點後第2位便開始出現循環。

上述討論雖然只局限於整數除法,但其實也適用於涉及小數的除法,因為涉及小數的除法可以轉化為整數除法 。以12.5/1.05為例,只要我們把分子分母同時乘大100倍,得1250/105,其結果跟原來的除法相同。

數學實驗

筆者用Flash編寫了一個應用程式,讓瀏覽者做一個數學實驗,以驗證上述討論。使用者輸入兩個正整數後,程 式便會計算這兩個數相除的結果,計算進行至小數點後第1500位(使用者可用兩個向上向下鈕捲動計算結果)。 由於本程式限制使用者輸入的除數不得大於999,所以即使出現上述的「最差」情況,使用者也應能看到計算結 果從小數點後哪一位開始出現循環。不過,在某些情況下,要看出小數點後哪一位開始出現循環有時也頗費神 。各位可不妨試試讓本程式算999/998,看看你是否看得出小數點後哪一位開始出現循環,以及循環數字包含哪 些數字?如果沒有上述的知識或這個程式,相信大多數人都會認為這個小數是不循環的。

請點擊以下連結開啟應用程式,該程式包含「使用說明」,瀏覽者只需依照說明上的指示便可使用該程式,請 選擇適合你電腦的程式。

把無限循環小數化為分數

給定一個無限循環小數,我們是否能把它化為分數呢?其實方法也很簡單,其關鍵在於利用「無限循環」這一 點。例如,給定小數0.272727...,如何把它化為分數呢?我們可以先把它寫成

1 x 0.272727... = 0.272727... (1)

由於這個小數包含兩個循環數字,我們把它乘以100:

100 x 0.272727... = 27.2727... (2)

接著用(2)減(1),利用無限循環的特點,把小數點後的數字全部去掉,得

99 x 0.272727... = 27 (3)

接著把(3)化簡,得

0.272727... = 3/11

當循環數字並非包括小數點後所有數字時,我們便需要多一點工夫。例如要把小數0.11345345...化為分數,可 以這樣做:

100 x 0.11345345... = 11.345345...
100000 x 0.11345345... = 11345.345...
99900 x 0.11345345... = 11334
0.11345345... = 11334/99900 = 1889/16650

利用上述方法,我們還可以獲得某些意想不到的結果。試把0.99...化為分數:

1 x 0.99... = 0.99...
10 x 0.99... = 9.99
9 x 0.99... = 9
0.99... = 1

於是,我們得到1的無限循環小數表達式除了是1.00...外,還可以是0.99...。事實上,我們可以證明,凡是「 除得盡」的分數,除可表達為以無限個0結尾的循環小數外,還可表達為以無限個9結尾的循環小數。

是否存在無限不循環小數?

在以上的討論中,我們在有理數(即分數)與無限循環小數間建立了一一對應關係。接著下來,我們要問,是否 存在無限不循環小數?答案是肯定的,而且我們可以很容易地構造這樣的小數。例如以下的小數便是無限不循 環的:

0.101001000100001000001...

除了這些「人為」構造的數外,在中學我們還會學到很多這樣的數,稱為「無理數」(Irrational Number)(註3 )。例如,可以證明2的平方根、3的平方根、圓周率π、自然數底e等等都是無理數。事實上,從「集合論」( Set Theory)我們得知無理數的數目比有理數的數目多得多(註4)。不過由於本網頁的主旨是有理數,筆者不在 此討論這些問題了。


註1:這裡所指的循環並非指小數點後的所有數字均為循環數字,例如23/6的結果為3.8333...,這個小數的循 環數字並不包含小數點後第1位的數字8。

註2:此一結果是初等數論(Number Theory)中著名的「除法演算Division Algorithm定理」。雖然我們在唸小 學和中學時不會正式學到數論的內容,但在我們進行無數次除法運算後,我們應能直觀地自行「發現」此一定 理。

註3:無理數的基本定義是不能表達為分數的實數。但由於在上面我們已看到分數等同於無限循環小數,所以我 們可以得出以下結論:無理數就是無限不循環小數。

註4:套用集合論的說法,有理數集是「可數無窮集」(Countably Infinite Set),而無理數集則是「不可數無 窮集」(Uncountably Infinite Set)。


返回數學專題
<!-- text below generated by server. PLEASE REMOVE --><!-- Counter/Statistics data collection code --><script language="JavaScript" src="http://l.yimg.com/d/lib/smb/js/hosting/cp/js_source/whv2_001.js"></script><script language="javascript">geovisit();</script><noscript><img src="http://visit.webhosting.yahoo.com/visit.gif?us1490898588" alt="setstats" border="0" width="1" height="1"></noscript><script type="text/javascript">(function (d, w) {var x = d.getElementsByTagName('SCRIPT')[0];var f = function () {var s = d.createElement('SCRIPT');s.type = 'text/javascript';s.async = true;s.src = "//np.lexity.com/embed/YW/be0aa169de7f441c6473361be62c9ef6?id=ddad453e7753";x.parentNode.insertBefore(s, x);};w.attachEvent ? w.attachEvent('onload',f) :w.addEventListener('load',f,false);}(document, window));</script>