完全数

id:amachangid:nishiohirokazu と話してる時に完全数の話題がでた。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def isPerfect(value):
    if value < 2:
        return False
    measure = []
    for i in xrange(1,value /2 + 1):
        if value % i == 0:
            measure.append(i)
    return value == sum(measure)


if __name__ == "__main__":
    for i in xrange(10000):
        if isPerfect(i):
            print i

とりあえず完全数を10個表示しようとしたら
時間がかかりすぎたので Wikipedia みてみたら,

2008年1月現在、発見されている完全数メルセンヌ素数と同じく44個である。

完全数 - Wikipedia

とんでも無いものを計算しようとしてたみたいw


ちなみに上記の結果。

yoshiori@yoshiori-ubuntu $ time python perfect.py
6
28
496
8128
python perfect.py  2.87s user 0.00s system 99% cpu 2.872 total