zaneli-eulerのisPrimeを修正。 この変更をしないと今回のProblem 58, 60 には使い物にならなかった。 従来は、まず調べたい値までの素数の全リストをprimes関数を使用して作っていたが、 それでは速度的に厳しかった。 調べ方がザルのような気もしたが、奇数のリストの中に割り切れる値が無いかを調べるほうが格段に速い。 まずspiralDiagonalsで渦巻きの対角線上の数値と、その時点での辺の長さを持つ無限リストを作っている。 > take 3 spiralDiagonals [(3,[3,5,7,9]),(5,[13,17,21,25]),(7,[31,37,43,49])] その無限リストに対してsearchで条件に合うものを探す。 対角線上の値をdに加算していき、(length nsとしているが全て4なのは分かっているので固定値でも良かったかも) その中の