完全数
http://www.agusa.i.is.nagoya-u.ac.jp/person/mzp/hiki/?exerciseに書いた問題の検証用。
完全数かどうかを判定するプログラムを書け。
完全数(perfect number)とは、その数字自身を除く約数(divisor)の和が、その数字自身になる数字のこと。
例:
- 6 = 1+2+3
- 28 = 1+2+4+7+14
- 496 = 1+2+4+8+16+31+62+124+248
divisor n = filter (\x-> n `mod` x == 0) [1..n] perfect n = (n*2) == (sum $ divisor n)
約数は半分調べるだけで十分、とか言うなっ。いいじゃん、496の約数がなんなのか調べたかっただけなんだからさ。