今気がついたのですが、さきほどの素数列挙の、改良版。
prime の最後の行を、
prime n = if n `mod` 2 == 0 then False else prime' n (n-2)
として、更にprime' を次のように書き換えます。
prime' n 1 = True
prime' n x
| n `mod` x == 0 = False
| n `mod` x /= 0 = prime' n (x-2)
これでも動くはずですね。まだ動作確認はしていないけれど。
素数は2を除けば、偶数で割れませんので、奇数でのあまり判定だけしています。
実行回数も、より速くなります。