為什麼有理數一定能表示為一個有限小數或無限循環小數,以及怎麼把一個無限循環小數化為它的既約分數形式?

不知道如何證明如果有理數化成小數形式如果是無限小數,那麼它一定是循環的。
碰到0.168831, 168831, 168831cdots怎麼知道它作為分數是什麼?


感謝周周邀請,這個問題也困擾了我多年。在知乎上余翔有一個證明。這裡我按照真實思考的順序來說,把它說得再細一點、通俗一點、長一點。

一、問題重述
要證明:有理數=有限小數+無限循環小數,咱們首先來做幾個說明:

  1. 有理數又稱為比例數,因此有理數和分子分母是整數的分數是等價的。每個有理數都有一個既約分數和它對應,既約分數是指分子和分母不僅是整數,而且二者的最大公約數是1。
  2. 有限小數是有理數一定正確。
  3. 我們可以把需要證明的有理數的範圍縮小到(0, 1)之間,如果在這個範圍內結論成立,那麼推廣到全部有理數上結論也成立。
  4. 無限循環小數是形如0.(r_1r_2...r_m)(a_1a_2...a_k)(a_1a_2...a_k)...的小數,其中前面的m個小數位r_1r_2...r_m沒有循環,循環節是a_1a_2...a_k

為了證明題目,需要證明下面兩個結論:

  1. 無限循環小數一定是有理數。
  2. 有理數一定是有限小數或者無限循環小數。

二、證明無限循環小數一定是有理數
首先我們任取一個無限循環小數q,從它開始循環的地方切一刀,把前面和後面的部分分開:
q=0.(r_1r_2...r_m)(a_1a_2...a_k)(a_1a_2...a_k)...=frac{r_1r_2...r_m}{10^m}+frac{1}{10^m}	imes 0.(a_1a_2...a_k)(a_1a_2...a_k)...
因為分數/有理數的四則運算還是分數/有理數,所以為證明q是有理數,只需要證明p=0.(a_1a_2...a_k)(a_1a_2...a_k)...可以寫成分數的形式。

我們把循環節提出來,把p再分解一次:
p=(a_1a_2...a_k) 	imes f = (a_1a_2...a_k) 	imes 0.(00...01)(00..01)...
後面的無限循環小數f的循環節是連著k-1個是0,然後跟一個1,恰好滿足:f=frac{1}{10^k-1}。原因是:
f 	imes (10^k-1)=0.(00...1)(00...1)... 	imes (99...9) = 0.99999...=1

因此我們得到:
q=frac{(r_1r_2...r_m)}{10^m}+frac{1}{10^m}	imesfrac{(a_1a_2...a_k)}{10^k-1}
這樣就證明了q是有理數。


三、證明有理數一定是有限小數或者無限循環小數
我們隨便拿來一個既約真分數q=frac{a}{b}。也就是分子分母互質,並且值在(0,1)之間的分數。我們要證明它一定是有限小數或者無限循環小數。

思路:
因為由上面的分析我們知道frac{c}{10^n-1}是循環節為c的循環小數,我們首先試探任意有理數q是否一定存在循環小數的相等形式:q=frac{a}{b} = frac{c}{10^n-1}(這個等式不一定成立,但是可以啟發我們)。假設這個等式成立,則:

交叉相乘,得到a(10^n-1)=bc。因為a、b互質,為了能讓等式成立,就必須使b是(10^n-1)的約數。因此,只要b是某個連續若干個9組成的整數的約數,那麼上面那個式子就一定成立。因此,我們需要嘗試找一個整數n,滿足b能整除(10^n-1)。這啟發我們構造一個特殊的數列。

構造:
對任意b,我們定義一個數f(m)為連續m個9組成的整數除以b的餘數:f(m)=999...99 mod b,如果有一個f(m)=0,那麼咱們的目的就達到了。

同餘除法有一點點複雜,經過一定計算我們可以得到一個遞推公式:
f(m+1) = 10 	imes f(m)+9 mod b
f(m+2)=100 	imes f(m) +99 mod b
繼續推導可以得到一個一般遞推公式:
f(m+k)=10^k 	imes f(m) + (10^k-1) mod b

因為一個數除以b的餘數只能是0到b-1之間的b個整數,一共只b種可能,因此不斷把k增大,一定有某兩個f的值相同了。咱們不妨就假設f(m)=f(m+k),這說明:
f(m+k)-f(m) mod b=(10^k-1)(f(m)+1) mod b=0
因此b(10^k-1)(f(m)+1) 的約數。

雖然這並不能說b能整除其中一個(除非b是素數),但是可以說b能分解成兩部分,各整除其中一部分:我們令b=uv,滿足u整除10^k-1v整除f(m)+1。前者可得整數x滿足ux=10^k-1;對於後者,我們首先由f(m)=10^m-1 mod b的定義得知10^m-1=rb+f(m),其中r是某個整數,從而兩邊加1得10^m=rb+f(m)+1,進而由v既整除b又整除f(m)+1得到v能夠整除10^m,得知存在另一個整數y滿足vy=10^m

因此我們得到:
frac{a}{b}=a 	imes frac{1}{v} 	imes frac{1}{u}=a 	imes frac{y}{10^m} 	imes frac{x}{10^k-1}= frac{1}{10^m} 	imes frac{axy}{10^k-1}

咱們令axy=(10^k-1)q+p,0 leq p<10^k-1
則可以得到:
frac{a}{b}=frac{q}{10^m}+frac{1}{10^m} 	imes frac{p}{10^k-1}
和上一節的結論一比較,就可以知道這一定是一個有限小數或循環小數之。由於分數a、b的選擇是任意的,證明完畢。


循環 ==&> 有理數:trivial

有理數 ==&> 循環
只需證明對任意frac{p}{q},集合left{frac{10^np}{q}-left[frac{10^np}{q} 
ight]
ight},nin mathbb{N}只能取有窮個值即可。這等價為
left{10^np-qleft[frac{10^np}{q}
ight]
ight}為有窮集合。記10^np=qalpha_n + k_n,	ext{ where } k_n< q,我們有原集合為{k_n},顯然這是有窮的。


符號太多不讓發。。。發截圖好了


用等比級數就可以了。。。


其實你就用小學學的那種豎式除法,找幾個除不開的分母去算。算過幾個之後,你就明白這是為什麼了……


S1
證:有理數必然表示成周期小數(完善匿名知友的回答)
1.簡單起見,設一正有理數為P/Q,其中P , Q 屬於 正整數
設P mod Q = R0 且 P = Q * N + R0 (其中N為P/Q的商)
將餘數R0右移至十分位(R0乘以10,即將位權為10^{0}的R0轉變為位權為10^{-1}的10*R0),並再次除以Q 以獲得商N1和餘數R1,則有
10cdot R_{0} = Q  * N_{1} +R_{1} [其中,N_{1}為P/Q的小數在十分位的值]
按照同樣方法可得到(將處於十分位的R1移至百分位)
10cdot R_{1} = Q  * N_{2} +R_{2}
...
10cdot R_{i} = Q  * N_{i+1} +R_{i+1}
[其中,N_{i}為P/Q的小數在10^{-i}位的值,(0leq N_{i}leq 9);
R_{i}為餘數,0leq R_{i} leq Q-1  R_{i}的位權為10^{-i};]

10cdot R_{n-1} = Q  * N_{n} +R_{n} ..............................Eq.1.1
10cdot R_{n} = Q  * N_{n+1} +R_{n+1} ...........................Eq.1.2
最終的小數結果為N.N_{1}N_{2}N_{3}N_{4}N_{5}N_{6}...
(約減到N_{n}時小數和分數誤差為frac{R_{n}}{Q}cdot 10^{-n}
frac{R_{n}}{Q}cdot 10^{-n} = 0.000 ...0N_{n+1}N_{n+2}...  .................Eq.1.3)

由於0leq R_{i} leq Q-1  ,則至多Q+1次就會有重複的餘數R_{i}
一旦R_{i}出現重複值,那麼之後的N_{i+k}R_{i+k}也會跟著重複
那就說明這個小數必然是有周期存在的,且周期不大於Q

也可以從另一角度來看,
frac{P}{Q}  = N.N_{1}N_{2}N_{3}... ,將小數左移n位

frac{10^{n}cdot P}{Q}  = NN_{1}N_{2}N_{3}...N_{n} +0.N_{n+1}N_{n+2}... =NN_{1}N_{2}N_{3}...N_{n} +frac{R_{n}}{Q} ,
由於0leq R_{i} leq Q-1  frac{R_{n}}{Q} 必為有限個值,而n可以取無限個數,那麼
必存在frac{R_{i}}{Q} =frac{R_{i+T}}{Q}........................Eq.1.4,而frac{R_{i+2T}}{Q}cdot 10^{-(i+2T)} = frac{R_{i+T}}{Q}cdot 10^{-(i+T)} - (frac{R_{i}}{Q}cdot 10^{-(i)} -frac{R_{i+T}}{Q}cdot 10^{-(i+T)})cdot 10^{-T}
帶入Eq.1.4 易得 frac{R_{i+2T}}{Q} =frac{R_{i}}{Q},易歸納的得frac{R_{i+kT}}{Q} =frac{R_{i}}{Q},也就是小數部分以T為循環。



2.有限小數的出現是因為R_{i}=0.
3.對於負有理數,可先轉化為正有理數,之後轉為上述證明

S2
計算周期小數對應的分數的方法比較多,這裡根據S1中的分析結合樓主給的小數進行計算
[樓主給的例子0.1688311..的分數為:168831/999999=13/77]
將原來的公式Eq.1.1 化為:
frac{R_{n-1}}{Q}=(N_{n}+frac{R_{n} }{Q}) cdot 10^{-1}
兩邊同乘以10^{-(n-1)}
frac{R_{n-1}}{Q}cdot 10^{-(n-1)}=N_{n}cdot 10^{-n}+frac{R_{n} }{Q} cdot 10^{-n}.....Eq.2.1
其中,frac{R_{n-1}}{Q}cdot 10^{-(n-1)} 為S1中N_{n-1}項後的余值
N_{m} 為所選擇的小數循環部分的首位(m > 0),循環周期為T【在0.1688311..中T=6】
R_{m-1} =R_{m-1+T}        ............................. Eq.2.2
由Eq.2.1
frac{R_{k} }{Q}cdot 10^{-k} =sum_{i=k+1}^{n}{10^{-i} } N_{i}+frac{R_{n} }{Q}cdot 10^{-n} ...........Eq.2.3

設上式中k=m-1,n=m-1+T並帶入Eq.2.2中的等式有
frac{R_{m-1} }{Q}cdot10^{-(m-1)} =frac{sum_{i=m}^{m-1+T}{10^{-i} } N_{i}}{1-10^{-T}}............Eq.2.4
可見Eq.2.4 和等比級數極值形式相同( frac{a_{1}}{1-q} ),原小數完全可以轉化為等比級數求解。
樓主的例子中小數部分沒有非循環部分,所以frac{R_{0} }{Q}=frac{R_{m-1} }{Q}cdot10^{-(m-1)}
,如果有的話
frac{R_{0} }{Q}= sum_{i=1}^{m-1}{10^{-i} } N_{i}+frac{R_{m-1} }{Q}cdot 10^{-(m-1)} =sum_{i=1}^{m-1}{10^{-i} } N_{i} +frac{sum_{i=m}^{m-1+T}{10^{-i} } N_{i}}{1-10^{-T}}
S3
總:
1.公式Eq.2.4其實也可以通過多組等比數列加和求出,無限循環小數可分解為不循環部分和循環部分,其中循環部分可以根據其周期T分解為T個q=10^-T的等比數列,也可以整個看做q=10^-T的一個等比數列。
2.證明的角度是從公式10cdot P_{n}=[frac{10Pn}{Q} ]*Q+ P_{n+1}入手的,當P_{n}相同時,就是一個新的周期的開始。P_{n}的可取值範圍限制在Q內,所以必然會重複出現。這一想法來源於一位匿名知友,另一名匿名知友直接從集合的角度考慮問題,通過考慮left{frac{10^np}{q}-left[frac{10^np}{q} 
ight]
ight}10^np=qalpha_n + k_n,	ext{ where } k_n< q,利用小數部分左移後的集合的有窮性,更容易的證明了該問題,本質上,上述兩種證明方式原理相同,後者從全局角度考慮問題,兩者有一個共通的公式10^{n} cdot p=[frac{10^{n} p}{q} ]*q+ r_{n},其中r_{n}為餘數,[frac{10^{n} p}{q} ]為商,frac{10^{n} p}{q} 為左移n位運算,那麼r_{n}&<q,則不管左移多少位,小數部分left{frac{10^np}{q}-left[frac{10^np}{q} 
ight]
ight}=frac{r_{n}}{q} 的值屬於一個有限的集合,且只要左移至多q+1次(每次左移一位),必會出現小數部分完全相等的情況,那麼可以推斷這兩次左移之間數為一循環.知友王小龍的解答前部分非常易懂,利用循環小數等比數列的性質證明其為有理數,後部分通過反過來尋找有理分數中的等比級數項分母的因子10^{m} ,(10^{T}-1)證明有理數都可以表示為小數。
3.不過,個人認為一個分數(1/3)和一個無限循環小數(0.3333333...)還是有些區別的,在S1中的誤差frac{Rn}{Q}cdot 10^{-n}frac{1}{3} *10^{-n})經過無窮次計算都會存在,那麼兩者等價的前提是忽略這個無窮小變數,這等價於兩邊取極限,不看成取極限則相差一個無窮小量。


在10進位里討論這個問題真的大丈夫?雖然答案是顯然的。。但是二進位明顯好解釋,循環不就是進位么。。


推薦閱讀:

TAG:數學 | 趣味數學 | 數學學習 |