## 【26】 Reciprocal cycles倒數的循環節 分子是1的分数被称作「单分数」。分母从2到10的单分数如下: • 1/2= 0.5 • 1/3= 0.(3) • 1/4= 0.25 • 1/5= 0.2 • 1/6= 0.1(6) • 1/7= 0.(142857) • 1/8= 0.125 • 1/9= 0.(1) • 1/10= 0.1 其中,0.1(6)即表示0.166666...,并且它的循环部分只有一个数。由上还能知道1/7的循环部分有6个数。 找出在1000以內的正整數d,而1/d的迴圈部分(循環節)最長 在程式語言中,直接從1除以n得到的小數,足以觀察出循環節嗎? ![](https://i.imgur.com/USIQsu1.png) 1/7可以看出循環節142857,但1/977就不行,顯示的長度不夠,我們自己來做除法。 ### 練習1:模擬除法,找出1/7小數點下50個數字。 假設a÷b=q餘r, 步驟1.將分子a乘以10倍,(直式除法中,餘數後面補0的意思) 步驟2.除以分母,取得整數商 步驟3.將商以append方法加入list尾端 步驟4.以a÷b餘數,取代 a值 重複上面4個步驟 ![](https://i.imgur.com/7U0yZul.png) ### 練習2:將練習1程式改成rec(n)函式,專門處理1/n,輸入n,傳回長度100的字串。 ![](https://i.imgur.com/ZkIpLKv.png) #### n=977肉眼難以辨識循環節吧!循環節很大,這些數不夠觀察! ![](https://i.imgur.com/UT7Bbj0.png) 觀察下列各數循環節: ![](https://i.imgur.com/XD8O3yF.png) ![](https://i.imgur.com/wvduDAb.png) ![](https://i.imgur.com/LLLLP2H.png) ![](https://i.imgur.com/EvsDkiN.png) ![](https://i.imgur.com/IY3WYvh.png) ![](https://i.imgur.com/SKSvKaI.png) 如果練習2傳回值能夠去掉前面的0,要比對循環節時比較方便,不然分母二位數要跳開第一個0,三位數要跳開2個0… #### *【數學性質】1/n循環節最大為n-1 假設傳回字串s,循環節長從2開始找,1/n最多找到n-1, ![](https://i.imgur.com/sDzyI21.png) ** s1==s2表示抓到最小循環 j=2時,s1=s[0,2]、s2=s[2,4],比對第0,1與第2,3數字 j=10時,s1=s[0,10]、s2=s[10,20],比對第0~9與第10~19數字 PS:上面的比對方法,必須先排除最前面的0 ## 找出在1000以內的正整數d,而1/d的迴圈部分(循環節)最長