18 lines
408 B
Text
18 lines
408 B
Text
main :: [sys_message]
|
|
main = [Stdout (lay (map show [first25, large]))]
|
|
|
|
first25 :: [num]
|
|
first25 = take 25 (filter pernicious [1..])
|
|
|
|
large :: [num]
|
|
large = filter pernicious [888888877..888888888]
|
|
|
|
pernicious :: num->bool
|
|
pernicious = prime . popcount
|
|
|
|
popcount :: num->num
|
|
popcount 0 = 0
|
|
popcount n = n mod 2 + popcount (n div 2)
|
|
|
|
prime :: num->bool
|
|
prime n = n >= 2 & and [n mod d ~= 0 | d<-[2..sqrt n]]
|