完全数というのは自分の除く約数の和が自分に等しい数.例えば
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ぐらいで結構重い