素数生成アルゴリズム
zip hoge (tail hoge)
を応用して素数生成できないかなと考えたがだめ。
合成数のリストを作っていって、隣り合わないところがあったら素数。或いは、2,3を約数に持たない合成数のリストを作っていって、(nextnum a /= b) だと、nextnum a と nextnum$nextnum a が2,3,5,7,11,13,17,19,23を除く素数かなと。where nextnum num = (num+3) `mod` 6
それで合成数リストを短い素数リストから作れればいいのだけども。foldl1 で mergesort みたいにしたら、merge するものが無限にあるから止まんない。
しかし、
4 | 6 | 8 | 10 |
9 | 12 | 15 | 18 |
16 | 20 | 24 | 28 |
だと、二方向に昇順だから
4 | 6 | 8 | (10) |
9 | (12) | 15 | 18 |
(16) | 20 | 24 | 28 |
のように括弧のついたやつだけの大小を判断すればよし? 頭を落としてソートしなおして…というアルゴリズムになる。