OFFSET
2,1
COMMENTS
b(n) = A114206(n) gives the length of P (including leading zeros), c(n) = A036275(n) gives the smallest cycle in QQQ... (including terminating zeros) and d(n) = A051626(n) gives the length of that cycle.
Thus 1/n = 10^(-b(n)) * ( a(n) + c(n)/(10^d(n) - 1) ). When c(n)=d(n)=0, the fraction c(n)/(10^d(n) - 1), which is 0/0, evaluates (by definition) to 0.
EXAMPLE
n .. expansion of 1/n .... a b c d
2 .50000000000000000000... 5 1 0 0
3 .33333333333333333333... 0 0 3 1
4 .25000000000000000000... 25 2 0 0
5 .20000000000000000000... 2 1 0 0
6 .16666666666666666667... 1 1 6 1
7 .14285714285714285714... 0 0 142857 6
8 .12500000000000000000... 125 3 0 0
9 .11111111111111111111... 0 0 1 1
10 .1000000000000000000... 1 1 0 0
11 .0909090909090909090... 0 1 90 2
12 .0833333333333333333... 8 2 3 1
13 .0769230769230769230... 0 1 769230 6
14 .0714285714285714285... 0 1 714285 6
15 .0666666666666666666... 0 1 6 1
16 .0625000000000000000... 625 4 0 0
(Start)
92 .0108695652173913043... 10 3(?) 869...260 22
102 .009803921568627450... 0 2 980...450 16
416 .002403846153846153... 240 5 384615 6
4544 .00022007042253521... 2200 7(?) 704...450 35
(End) - Ruud H.G. van Tol, Nov 20 2024
MAPLE
A114205 := proc(n) local sh, lpow, mpow, a, b ; lpow:=1 ; while true do for mpow from lpow-1 to 0 by -1 do if (10^lpow-10^mpow) mod n =0 then a := (10^lpow-10^mpow)/n ; sh := 10^(lpow-mpow)-1 ; b := a mod sh ; a := floor(a/sh) ; while b>0 and b*10 < sh+1 do a := 10*a ; b := 10*b ; end ; RETURN(a) ; fi ; od ; lpow := lpow+1 ; od ; end: for n from 2 to 600 do printf("%d %d ", n, A114205(n)) ; od ; # R. J. Mathar, Oct 19 2006
MATHEMATICA
fa[n_] := Block[{p}, p = First[RealDigits[1/n]]; If[ ! IntegerQ[Last[p]], p = Most[p]]; FromDigits[p]]; Table[fa[n], {n, 100}] (* Ray Chandler, Oct 18 2006 *)
(* alternate program *)
r[x_] := RealDigits[1/x]
w[x_] := First[r[x]]
f[x_] := First[w[x]]
l[x_] := Last[w[x]]
z[x_] := Last[r[x]]
a[x_] := Which[IntegerQ[l[x]], FromDigits[w[x]], IntegerQ[f[x]] ==False, 0, True, FromDigits[Drop[w[x], -1]]]
b[x_] := Which[IntegerQ[l[x]], Length[w[x]]-1*z[x], IntegerQ[f[x]] ==False, -1*z[x], True, Length[Drop[w[x], -1]]-1*z[x]]
c[x_] := Which[IntegerQ[l[x]], 0, IntegerQ[f[x]]==False, FromDigits[f[x]], True, FromDigits[l[x]]]
d[x_] := Which[IntegerQ[l[x]], 0, IntegerQ[f[x]]==False, Length[f[x]], True, Length[l[x]]] (* Hans Havermann, Oct 19 2006 *)
PROG
(PARI) a(n)= my(s=max(valuation(n, 2), valuation(n, 5))); s||return(0); my([p, r]= divrem(10^s, n)); if(r&&(r=n\r)>9, s+=logint(r, 10)); 10^s\n; \\ Ruud H.G. van Tol, Nov 19 2024
CROSSREFS
KEYWORD
nonn,base
AUTHOR
N. J. A. Sloane, Oct 17 2006
EXTENSIONS
More terms from Ray Chandler and Hans Havermann, Oct 18 2006
STATUS
approved