get "libhdr" manifest $( MAXIMUM = 20000 $) // Calculate proper divisors for 1..N let propDivSums(n) = valof $( let v = getvec(n) for i = 1 to n do v!i := 1 for i = 2 to n/2 do $( let j = i*2 while j < n do $( v!j := v!j + i j := j + i $) $) resultis v $) // Are A and B an amicable pair, given the list of sums of proper divisors? let amicable(pdiv, a, b) = a = pdiv!b & b = pdiv!a let start() be $( let pds = propDivSums(MAXIMUM) for x = 1 to MAXIMUM do for y = x+1 to MAXIMUM do if amicable(pds, x, y) do writef("%N, %N*N", x, y) $)