52 lines
1.2 KiB
Plaintext
52 lines
1.2 KiB
Plaintext
10 PRINT CHR$(147)
|
|
20 N = 100: REM N MAY BE INCREASED, BUT WILL SLOW EXECUTION
|
|
30 LN = INT(10*N/3)+16
|
|
40 ND = 1
|
|
50 DIM A(LN)
|
|
60 N9 = 0
|
|
70 PD = 0:REM FIRST PRE-DIGIT IS A 0
|
|
80 REM
|
|
90 FOR J = 1 TO LN
|
|
100 A(J-1) = 2:REM START WITH 2S
|
|
110 NEXT J
|
|
120 REM
|
|
130 FOR J = 1 TO N
|
|
140 Q = 0
|
|
150 FOR I = LN TO 1 STEP -1:REM WORK BACKWARDS
|
|
160 X = 10*A(I-1) + Q*I
|
|
170 A(I-1) = X - (2*I-1)*INT(X/(2*I-1)):REM X - INT ( X / Y) * Y
|
|
180 Q = INT(X/(2*I - 1))
|
|
190 NEXT I
|
|
200 A(0) = Q-10*INT(Q/10)
|
|
210 Q = INT(Q/10)
|
|
220 IF Q=9 THEN N9 = N9 + 1: GOTO 450
|
|
240 IF Q<>10 THEN GOTO 350
|
|
250 REM Q == 10
|
|
260 D = PD+1: GOSUB 500
|
|
270 IF N9 <= 0 THEN GOTO 320
|
|
280 FOR K = 1 TO N9
|
|
290 D = 0: GOSUB 500
|
|
300 NEXT K
|
|
310 REM END IF
|
|
320 PD = 0
|
|
330 N9 = 0
|
|
335 GOTO 450
|
|
340 REM Q <> 10
|
|
350 D = PD: GOSUB 500
|
|
360 PD = Q
|
|
370 IF N9 = 0 THEN GOTO 450
|
|
380 FOR K = 1 TO N9
|
|
390 D = 9: GOSUB 500
|
|
400 NEXT K
|
|
410 N9 = 0
|
|
450 NEXT J
|
|
460 PRINT RIGHT$(STR$(PD),1)
|
|
470 END
|
|
480 REM
|
|
490 REM OUTPUT DIGITS
|
|
500 IF ND=0 THEN PRINT RIGHT$(STR$(D),1);: RETURN
|
|
510 IF D=0 THEN RETURN
|
|
520 PRINT RIGHT$(STR$(D),1);".";
|
|
530 ND = 0
|
|
550 RETURN
|