44 lines
1.1 KiB
Text
44 lines
1.1 KiB
Text
' Arithmetic numbers
|
|
|
|
DIM N AS LONG, ArithmCnt AS LONG, ComposCnt AS LONG
|
|
DIM Dv AS LONG, DvCnt AS LONG, Sum AS LONG, Quot AS LONG
|
|
N = 1
|
|
ArithmCnt = 0
|
|
ComposCnt = 0
|
|
PRINT "The first 100 arithmetic numbers are:"
|
|
DO WHILE ArithmCnt < 1000001
|
|
Dv = 1
|
|
DvCnt = 0
|
|
Sum = 0
|
|
DO
|
|
Quot = N \ Dv
|
|
IF Quot < Dv THEN EXIT DO
|
|
IF Quot = Dv AND N MOD Dv = 0 THEN ' N is a square
|
|
Sum = Sum + Quot
|
|
DvCnt = DvCnt + 1
|
|
EXIT DO
|
|
END IF
|
|
IF N MOD Dv = 0 THEN
|
|
Sum = Sum + Dv + Quot
|
|
DvCnt = DvCnt + 2
|
|
END IF
|
|
Dv = Dv + 1
|
|
LOOP
|
|
IF Sum MOD DvCnt = 0 THEN ' N is arithmetic
|
|
ArithmCnt = ArithmCnt + 1
|
|
IF ArithmCnt <= 100 THEN
|
|
PRINT USING "####"; N;
|
|
IF ArithmCnt MOD 10 = 0 THEN PRINT
|
|
END IF
|
|
IF DvCnt > 2 THEN ComposCnt = ComposCnt + 1
|
|
IF ArithmCnt = 1000 OR ArithmCnt = 10000 OR ArithmCnt = 100000 OR ArithmCnt = 1000000 THEN
|
|
PRINT
|
|
PRINT USING "The #######th arithmetic number is ########"; ArithmCnt; N;
|
|
PRINT USING " up to which ######"; ComposCnt;
|
|
PRINT " are composite.";
|
|
END IF
|
|
END IF
|
|
N = N + 1
|
|
LOOP
|
|
PRINT
|
|
END
|