RosettaCodeData/Task/Arithmetic-numbers/QuickBASIC/arithmetic-numbers.basic
2026-04-30 12:34:36 -04:00

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