|
既約分数m/n(0<m<nを満たす整数)の循環節の性質
例
循環節の長さが偶数のとき、半分で切って足し合わせると、9が並ぶ。
1/7=0.{142857}の場合、142+857=999
考察
●2分割
循環節の長さを2kとする。
循環節の前半部分のk桁をa、後半部分のk桁をbとする。
題意より、a+b=10^k-1
既約分数m/nは、m/n=(a*10^k+b)/(10^(2k)-1)と表される。
∴m{10^(2k)-1}=n(a*10^k+b)
∴m{10^(2k)-1}=n{a*10^k+(10^k-1-a)}
∴m(10^k+1)(10^k-1)=n(a+1)(10^k-1)
∴m(10^k+1)=n(a+1)
m,nは互いに素なので、nは(10^k+1)の約数となる。
例
1/7=142857/999999=(142*1000+857)/999999=0.{142857}の場合、142+857=999
循環節の長さが6なので、k=3 ∴10^3+1=1001=7*11*13
●3分割
循環節の長さを3kとする。
循環節の前1/3部分のk桁をa、真ん中1/3部分のk桁をb、後1/3部分のk桁をcとする。
題意より、a+b+c=10^k-1
既約分数m/nは、m/n=(a*10^(2k)+b*10^k+c)/(10^(3k)-1)と表される。
∴m{10^(3k)-1}=n(a*10^(2k)+b*10^k+c)
∴m{10^(3k)-1}=n{a*10^(2k)+b*10^k+(10^k-1-a-b)}
∴m(10^k-1){10^(2k)+10^k+1}=n(10^k-1){a*(10^k+1)+b+1}
∴m{10^(2k)+10^k+1}=n{a*(10^k+1)+b+1}
m,nは互いに素なので、nは(10^(2k)+10^k+1)の約数となる。
例
1/7=142857/999999=(14*10000+28*100+57)/999999=0.{142857}の場合、14+28+57=99
循環節の長さが6なので、k=2 ∴10^4+10^2+1=10101=3*7*13*37
(終り)
!!DATA 3 !個数
!!DATA 7,11,13 !素因数
DATA 4 !個数
DATA 3,7,13,37 !素因数
READ D
DIM F(D) !素因数
MAT READ F
MAT PRINT F; !debug
FOR i=1 TO D !素因数の組み合わせで分母の候補を得る
FOR h=0 TO COMB(D,i)-1
LET m=1 !分子
LET n=1 !分母
LET T=Num2CombBit(h,D,i)
FOR J=1 TO D
IF MOD(T,2)=1 THEN LET n=n*F(J)
LET T=INT(T/2)
NEXT J
CALL cycle(m,n,k,L) !循環節の長さを得る
PRINT m;"/";n;"="; !純循環小数として表示する ※k=0
PRINT "0.{";right$(REPEAT$("0",L)&STR$(INT(10^(k+L)*m/n)),L);"} 循環節=";L
NEXT h
NEXT i
END
EXTERNAL SUB cycle(m,n,k,L) !既約分数m/n(0<m<nを満たす整数)の有限小数の桁数kと循環節の長さLを求める
!n/m=0.ab…z{AB…Z} 有限小数0.ab…zはk桁 (k+1)桁からの循環節AB…Zの長さはL
LET x=n
LET p=0 !2^p
DO WHILE MOD(x,2)=0
LET x=x/2
LET p=p+1
LOOP
LET q=0 !5^q
DO WHILE MOD(x,5)=0
LET x=x/5
LET q=q+1
LOOP
LET k=MAX(p,q) !小数点以下k桁は循環しない
IF x=1 THEN !有限小数
LET L=0
ELSE !10^L≡1 MOD n/(2^p*5^q)を満たす最小のLより
LET L=1 !循環節の長さ
LET a=MOD(10,x)
DO WHILE a<>1
LET a=MOD(a*10,x)
LET L=L+1
LOOP
END IF
END SUB
EXTERNAL FUNCTION Num2CombBit(h,N,R) !番号から組合せビットパターンを生成する ※辞書式順序
LET v=h+1
LET j=R
LET A=0
FOR i=N-1 TO 0 STEP -1 !組合せをビット位置とする
LET t=COMB(i,j)
IF v>t THEN
LET A=A+2^i !ビット位置(N-i-1)を1とする
LET j=j-1
LET v=v-t
END IF
NEXT i
LET Num2CombBit=A
END FUNCTION
実行結果
3 7 13 37
1 / 3 =0.{3} 循環節= 1
1 / 7 =0.{142857} 循環節= 6
1 / 13 =0.{076923} 循環節= 6
1 / 37 =0.{027} 循環節= 3
1 / 21 =0.{047619} 循環節= 6
1 / 39 =0.{025641} 循環節= 6
1 / 91 =0.{010989} 循環節= 6
1 / 111 =0.{009} 循環節= 3
1 / 259 =0.{003861} 循環節= 6
1 / 481 =0.{002079} 循環節= 6
1 / 273 =0.{003663} 循環節= 6
1 / 777 =0.{001287} 循環節= 6
1 / 1443 =0.{000693} 循環節= 6
1 / 3367 =0.{000297} 循環節= 6
1 / 10101 =0.{000099} 循環節= 6
|
|