rubyco(るびこ)の日記 : 10000までの完全数を列挙せよ
エラトステネスの篩もよいけれど、別の問題もやろうよ。ということで「完全数」です。
Rubyは結構縦長なコードになる印象ですね。Pythonは横長になるなぁ。そんな訳で書いてみました。
—–
perfectnumber.py
def getdivisorsum(num): list = range(1,int(num / 2) + 1); return sum([x for x in list if num % x == 0]) def getperfectnum(limit): return [x for x in range(2,limit + 1) if getdivisorsum(x) == x]
実行結果。
>>> getperfectnum(10000) [6, 28, 496, 8128]
10秒程度の時間がかかってしまいました。100000まで求めようと思うとマシンが止まります。