53 lines
1.3 KiB
Text
53 lines
1.3 KiB
Text
PRINT "First 10 values of R:"
|
|
FOR i% = 1 TO 10 : PRINT ;FNffr(i%) " "; : NEXT : PRINT
|
|
PRINT "First 10 values of S:"
|
|
FOR i% = 1 TO 10 : PRINT ;FNffs(i%) " "; : NEXT : PRINT
|
|
PRINT "Checking for first 1000 integers:"
|
|
r% = 1 : s% = 1
|
|
ffr% = FNffr(r%)
|
|
ffs% = FNffs(s%)
|
|
FOR wanted% = 1 TO 1000
|
|
CASE TRUE OF
|
|
WHEN wanted% = ffr% : r% += 1 : ffr% = FNffr(r%)
|
|
WHEN wanted% = ffs% : s% += 1 : ffs% = FNffs(s%)
|
|
OTHERWISE: EXIT FOR
|
|
ENDCASE
|
|
NEXT
|
|
IF r% = 41 AND s% = 961 PRINT "Test passed" ELSE PRINT "Test failed"
|
|
END
|
|
|
|
DEF FNffr(N%)
|
|
LOCAL I%, J%, R%, S%, V%
|
|
DIM V% LOCAL 2*N%+1
|
|
V%?1 = 1
|
|
IF N% = 1 THEN = 1
|
|
R% = 1
|
|
S% = 2
|
|
FOR I% = 2 TO N%
|
|
FOR J% = S% TO 2*N%
|
|
IF V%?J% = 0 EXIT FOR
|
|
NEXT
|
|
V%?J% = 1
|
|
S% = J%
|
|
R% += S%
|
|
IF R% <= 2*N% V%?R% = 1
|
|
NEXT I%
|
|
= R%
|
|
|
|
DEF FNffs(N%)
|
|
LOCAL I%, J%, R%, S%, V%
|
|
DIM V% LOCAL 2*N%+1
|
|
V%?1 = 1
|
|
IF N% = 1 THEN = 2
|
|
R% = 1
|
|
S% = 2
|
|
FOR I% = 1 TO N%
|
|
FOR J% = S% TO 2*N%
|
|
IF V%?J% = 0 EXIT FOR
|
|
NEXT
|
|
V%?J% = 1
|
|
S% = J%
|
|
R% += S%
|
|
IF R% <= 2*N% V%?R% = 1
|
|
NEXT I%
|
|
= S%
|