proc d*(n: int): int = var result: int = 1 var m: int = 2 while m < n div 2 + 1: if (n mod m) == 0: inc(result, m) inc(m) return result proc amicable*(n: int): int = var dn: int = d(n) var ddn: int = d(dn) var result: int = 0 if ddn == n and n != dn and n < 100000: inc(result, n) return result var result: int = 0 var i: int = 1 while i < 10000: inc(result, amicable(i)) inc(i) echo result