問題はこちら。毎回、答え合わせに使っているProject Euler: Python solutionsよりも高速にできた。 方針としては 28123以下の過剰数のリスト abd を求める。 1.で作ったリスト abd を使い、1から28123までの全ての数について2つの過剰数の和で書けるか調べる。 2つの過剰数で書けない数の和を求める。 まずは、真の約数のリストを返すdivisorsを定義。(本当は真の約数の和を返せば十分だけど、後々使えそうなので) def divisors(n): divs = [1] for i in xrange(2, int(math.sqrt(n)) + 1): if n % i == 0: divs.append(i) if n/i not in divs: divs.append(n/i) divs.sort() return divs はじめ、メインの処