『博士の愛した数式』がなかなか良かったので友愛数に引き続き、完全数もPythonでやってみた
完全数とは、その数自身を除く約数の和が、その数自身と等しい自然数のことである。例えば 6 (=1+2+3)、28 (=1+2+4+7+14) が完全数である。
完全数 - Wikipedia
Python
def divisor(p): return [n for n in range(1,p) if p % n == 0] def p_num(min, max): return [n for n in range(min, max) if n == sum(divisor(n))] def put_p_num(seq): for n in seq: print "%d (=%s)" % (n, "+".join(map(str,divisor(n)))) pn = p_num(1,10000) put_p_num(pn)
結果
1から10000の間で調べてみた
6 (=1+2+3) 28 (=1+2+4+7+14) 496 (=1+2+4+8+16+31+62+124+248) 8128 (=1+2+4+8+16+32+64+127+254+508+1016+2032+4064)
また処理遅いが...(||゚Д゚)