Let $d(n)$ be defined as the sum of proper divisors of $n$ (numbers less than $n$ which divide evenly into $n$).
If $d(a) = b$ and $d(b) = a$, where $a \not= b$, then $a$ and $b$ are an amicable pair and each of $a$ and $b$ are called amicable numbers.
For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore $d(220) = 284$. The proper divisors of 284 are 1, 2, 4, 71 and 142; so $d(284) = 220$.
Evaluate the sum of all the amicable numbers under 10000.
http://projecteuler.net/problem=21
10000以下の友愛数の総和を求める問題。
友愛数の定義に従えばよいが、約数を求めるのが大変かもしれない。
ここは都合よくSage の函数が用意されているのでありがたく使わせてもらう。
ans = 0 for a in xrange(2,10000): b = sum([x for x in divisors(a) if x != a]) if b > a: if sum([x for x in divisors(b) if x != b]) == a: ans = ans + a + b print ans
少しずつ更新していくようにしたい。