# Rosetta Code problem: http://rosettacode.org/wiki/Aliquot_sequence_classifications # by Jjuanhdez, 06/2022 global limite limite = 20000000 dim nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 28, 496, 220, 1184, 12496, 1264460, 790, 909, 562, 1064, 1488} for n = 0 to nums[?]-1 print "Number "; nums[n]; " : "; call PrintAliquotClassifier(nums[n]) next n print print "Program normal end." end function PDtotal (n) total = 0 for y = 2 to n if (n mod y) = 0 then total += (n / y) next y return total end function subroutine PrintAliquotClassifier (K) longit = 52: n = K: clase = 0: priorn = 0: inc = 0 dim Aseq(longit) for element = 2 to longit Aseq[element] = PDtotal(n) n = int(Aseq[element]) print n; " "; begin case case n = 0 print " Terminating": clase = 1: exit for case n = K and element = 2 print " Perfect" : clase = 2: exit for case n = K and element = 3 print " Amicable": clase = 3: exit for case n = K and element > 3 print " Sociable": clase = 4: exit for case n <> K and Aseq[element - 1] = Aseq[element] print " Aspiring": clase = 5: exit for case n <> K and Aseq[element - 2] = n print " Cyclic": clase = 6: exit for end case if n > priorn then priorn = n: inc += 1 else inc = 0: priorn = 0 if inc = 11 or n > limite then exit for next element if clase = 0 then print " non-terminating" end subroutine