100 REM Square-free integers 110 DECLARE EXTERNAL FUNCTION SqFree 120 DECLARE EXTERNAL SUB Report 130 LET C = 0 140 PRINT "Square free integers up to 145:" 150 FOR I = 1 TO 145 160 IF SqFree(I) <> 0 THEN 170 PRINT USING "####": I; 180 LET C = C + 1 190 IF MOD(C, 10) = 0 THEN PRINT 200 END IF 210 NEXT I 220 PRINT C; "were found." 230 PRINT 240 CALL Report(100) 250 CALL Report(1000) 260 CALL Report(10000) 270 CALL Report(100000) 280 END 290 ! 300 REM return nonzero if N has no square divisors other than 1 310 EXTERNAL FUNCTION SqFree(N) 320 REM quick exit for most common square 330 LET Result = MOD(N, 4) ! Non-zero if MOD(N, 4) <> 0 340 LET I = 3 350 LET Sq = I * I 360 DO WHILE Sq <= N AND Result <> 0 370 IF MOD(N, Sq) = 0 THEN 380 LET Result = 0 390 ELSE 400 LET I = I + 2 410 LET Sq = I * I 420 END IF 430 LOOP 440 LET SqFree = Result 450 END FUNCTION 460 ! 470 REM Report number of square-free integers up to Limit 480 EXTERNAL SUB Report(Limit) 490 PRINT "Square-free integers up to "; 500 PRINT USING "######: ": LIMIT; 510 LET C = 0 520 FOR I = 1 TO LIMIT 530 IF SqFree(I) <> 0 THEN LET C = C + 1 540 NEXT I 550 PRINT USING "#####": C; 560 PRINT " were found." 570 END SUB