In general case, the decimal part is consisted of repeating part and not repeating part.
For example, 1/6 = 0.1[6].
We can find a repeating point
when the same quotient and remainder occur during the iteration of division.
The program is as follows
10 ' cycle_m
20 '
30 input N
40 dim Q%(N),R%(N)
50 for I=1 to N:Q%(I)=0:R%(I)=0:next I
60 '
70 A=1
80 B=A*10\N:A=res
90 Q%(A)=B:R%(A)=A
100 '
110 B=A*10\N:A=res
120 if and{Q%(A)=B,R%(A)=A} then 160
130 Q%(A)=B:R%(A)=A
140 goto 110
150 '
160 S=Q%(A):T=R%(A)
170 A=1:F=0
180 B=A*10\N:A=res
190 if and{B=S,A=T} then print "[";:F=1
200 Q%(A)=B:R%(A)=A:print B;
210 if F=0 then 180
220 '
230 B=A*10\N:A=res
240 if and{B=S,A=T} then print "]":end
250 Q%(A)=B:R%(A)=A:print B;:goto 230
The formula of the length of repeating decimal is,
let n be,
n = 2a * 5b * n', (10, n') = 1
k = max {a, b}
e is the order of 10 at mod n'
then m/n is,
first k decimal digits does not repeat
repeating from (k+1) decimal digit, and its length is e.
| previous | index | next |
|---|