All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars
 perplexus dot info

 Repeating decimals (Posted on 2006-09-25)
The decimal expansion of 1/271 repeats with a period of length 5:
.003690036900369 ...

However, it is not the smallest number q for which the decimal expansion of 1/q has a repetition length of 5.

Find the smallest q so that the decimal expansion of 1/q has repetition length n for each of {1, 2, ..., 10}

Is there a simple way of finding such a number?

 See The Solution Submitted by Jer Rating: 4.5000 (2 votes)

Comments: ( Back to comment list | You must be logged in to post comments.)
 computer exploration | Comment 1 of 11

When a fraction repeats with a length of n, it can be represented as a fraction with the denominator consisting of n 9's. That fraction is of course not necessarily in its reduced form. For example, 1/271 = .0036900369... = 369/99999, and the 1/271 is the fraction in its simplest (reduced) form.

Therefore q must be a factor of the repeated-9 number. The question is how to determine which factor will work.

The case of length 1 is ambiguous, as any terminating decimal can be said to have length 1, with its repeating 0's, as in q=1, 1/1 = 1.0000.... Otherwise the smallest q would be 3, giving .333....

Here's a table for the first 12 lengths:

`length    prime factors of rep-9   smallest q   prime factors of smallest q2            3 3 11                     11       113            3 3 3 37                   27       3 3 34            3 3 11 101                 101      1015            3 3 41 271                 41       416            3 3 3 7 11 13 37           7        77            3 3 239 4649               239      2398            3 3 11 73 101 137          73       739            3 3 3 3 37 333667          81       3 3 3 310           3 3 11 41 271 9091         451      11 4111           3 3 21649 513239           21649    2164912           3 3 3 7 11 13 37 101 9901  707      7 101`

I can't see a pattern of the choice of prime factor(s) that make up the smallest q.

DEFDBL A-Z
DECLARE SUB factor (num, s\$)
DIM SHARED nFct
DIM SHARED fct(30)
CLS
FOR i = 2 TO 12
nbr = VAL(STRING\$(i, "9"))
factor nbr, f\$
f\$ = LTRIM\$(f\$) + " "
PRINT i, f\$; TAB(41);
nFct = 0
DO
ix = INSTR(f\$, " ")
IF ix > 0 THEN
n = VAL(LEFT\$(f\$, ix - 1))
f\$ = MID\$(f\$, ix + 1)
nFct = nFct + 1
fct(nFct) = n
END IF
LOOP UNTIL f\$ = ""
lowestP = 999999999999999#
FOR combo = 1 TO INT(2 ^ nFct - .5)
prod = 1: pwr2 = 1
FOR j = 1 TO nFct
IF pwr2 AND combo THEN prod = prod * fct(j)
pwr2 = pwr2 * 2
NEXT
q\$ = LTRIM\$(STR\$(1 / prod))
IF LEFT\$(q\$, 1) = "0" THEN q\$ = MID\$(q\$, 2)
q2\$ = ""
FOR j = 1 TO LEN(q\$)
ts\$ = MID\$(q\$, j, 1)
tst = INSTR("0123456789", ts\$)
IF tst > 0 THEN q2\$ = q2\$ + ts\$
IF ts\$ = "E" OR ts\$ = "D" THEN EXIT FOR
NEXT
FOR l = 1 TO i
good = 1
FOR j = l + 1 TO LEN(q2\$) - 1
IF MID\$(q2\$, j - l, 1) <> MID\$(q2\$, j, 1) THEN good = 0: EXIT FOR
NEXT
IF good THEN replen = l: EXIT FOR
NEXT
IF replen = i THEN
IF prod < lowestP THEN lowestP = prod
END IF
NEXT
PRINT lowestP;
factor lowestP, fc\$
PRINT TAB(50); fc\$

NEXT

SUB factor (num, s\$)
s\$ = "": n = ABS(num): IF n > 0 THEN limit = SQR(n):  ELSE limit = 0
IF limit <> INT(limit) THEN limit = INT(limit + 1)
dv = 2: GOSUB DivideIt
dv = 3: GOSUB DivideIt
dv = 5: GOSUB DivideIt
dv = 7
DO UNTIL dv > limit
GOSUB DivideIt: dv = dv + 4 '11
GOSUB DivideIt: dv = dv + 2 '13
GOSUB DivideIt: dv = dv + 4 '17
GOSUB DivideIt: dv = dv + 2 '19
GOSUB DivideIt: dv = dv + 4 '23
GOSUB DivideIt: dv = dv + 6 '29
GOSUB DivideIt: dv = dv + 2 '31
GOSUB DivideIt: dv = dv + 6 '37
IF INKEY\$ = CHR\$(27) THEN s\$ = CHR\$(27): EXIT SUB
LOOP
IF n > 1 THEN s\$ = s\$ + STR\$(n)
EXIT SUB

DivideIt:
DO
q = INT(n / dv)
IF q * dv = n AND n > 0 THEN
n = q
s\$ = s\$ + STR\$(dv)
IF n > 0 THEN limit = SQR(n):  ELSE limit = 0
IF limit <> INT(limit) THEN limit = INT(limit + 1)
ELSE
EXIT DO
END IF
LOOP
RETURN
END SUB

 Posted by Charlie on 2006-09-25 11:03:49

 Search: Search body:
Forums (0)