49 lines
1.5 KiB
Text
49 lines
1.5 KiB
Text
100 REM Abundant odd numbers
|
|
110 DECLARE EXTERNAL FUNCTION DivisorSum
|
|
120 REM first 25 odd abundant numbers
|
|
130 LET OddNumber = 1
|
|
140 LET ACount = 0
|
|
150 LET DSum = 0
|
|
160 PRINT "The first 25 abundant odd numbers:"
|
|
170 DO WHILE ACount < 25
|
|
180 LET DSum = DivisorSum(OddNumber)
|
|
190 IF DSum > OddNumber THEN
|
|
200 LET ACount = Acount + 1
|
|
210 PRINT USING "######": OddNumber;
|
|
220 PRINT " proper divisor sum: ";
|
|
230 PRINT USING "######": DSum
|
|
240 END IF
|
|
250 LET OddNumber = OddNumber + 2
|
|
260 LOOP
|
|
270 REM 1000th odd abundant number
|
|
280 DO WHILE ACount < 1000
|
|
290 LET DSum = DivisorSum(OddNumber)
|
|
300 IF DSum > OddNumber THEN LET ACount = Acount + 1
|
|
310 LET OddNumber = OddNumber + 2
|
|
320 LOOP
|
|
330 PRINT "1000th abundant odd number:"
|
|
340 PRINT " "; OddNumber - 2; "proper divisor sum:"; DSum
|
|
350 REM first odd abundant number > 1000000000
|
|
360 LET OddNumber = 1000000001
|
|
370 LET Found = 0
|
|
380 DO WHILE Found = 0
|
|
390 LET DSum = DivisorSum(OddNumber)
|
|
400 IF DSum > OddNumber THEN
|
|
410 LET Found = 1
|
|
420 PRINT "First abundant odd number > 1 000 000 000:"
|
|
430 PRINT " "; OddNumber; "proper divisor sum:"; DSum
|
|
440 END IF
|
|
450 LET OddNumber = OddNumber + 2
|
|
460 LOOP
|
|
470 END
|
|
480 External Function DivisorSum(N)
|
|
490 LET Sum = 1
|
|
500 FOR D = 2 TO INT(SQR(N))
|
|
510 IF MOD(N, D) = 0 THEN
|
|
520 LET Sum = Sum + D
|
|
530 LET OtherD = INT(N / D)
|
|
540 IF OtherD <> D THEN LET Sum = Sum + OtherD
|
|
550 END IF
|
|
560 NEXT D
|
|
570 LET DivisorSum = Sum
|
|
580 END FUNCTION
|