てきとうなメモ

本の感想とか技術メモとか

完全数

完全数というのは自分の除く約数の和が自分に等しい数.例えば

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14

なので,6と28は完全数である.これをHaskellで書いてみる

measure n = [ x | x <- [1..(n `div` 2)], n `mod` x == 0 ]
perfect = [x | x <- [1..], x == sum (measure x)]
*Main> take 1 $ perfect
[6]
*Main> take 2 $ perfect
[6,28]
*Main> take 3 $ perfect
[6,28,496]
*Main> take 4 $ perfect
[6,28,496,8128]

4ぐらいで結構重い