primesW
= [2,3,5,7] ++ _Y
( (11:
) . gapsW
13 (tail wheel
) . _U
. where
wheel
= cycle [b
-a
| let xs
= [i
| i
<- [11..11+210], gcd i
210 == 1]
gapsW k (d:w) s@(c:cs) | k < c = k : gapsW (k+d) w s -- set difference
_Y g = g (_Y g) -- = g . g . g . g . ...... -- recursive fixpoint
_U ((x:xs):t) = x : (union xs . _U . pairs) t -- ~= nub . sort . concat
where
pairs (xs:ys:t) = union xs ys : pairs t
union a
@(x:xs
) b
@(y:ys
) = case compare x y
of LT -> x : union xs b
EQ -> x : union xs ys
GT -> y : union a ys
cHJpbWVzVyA6OiBbSW50XSAgIApwcmltZXNXID0gWzIsMyw1LDddICsrIF9ZICggKDExOikgLiBnYXBzVyAxMyAodGFpbCB3aGVlbCkgLiBfVSAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAgKFxwLT4gIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAgKHAqKSAuIGRyb3BXaGlsZSAoPCBwKSAkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbmwgKCspIChwIC0gcmVtIChwLTExKSAyMTApIHdoZWVsKSApCiAgd2hlcmUKICB3aGVlbCA9IGN5Y2xlIFtiLWEgfCBsZXQgeHMgPSBbaSB8IGkgPC0gWzExLi4xMSsyMTBdLCBnY2QgaSAyMTAgPT0gMV0KICAgICAgICAgICAgICAgICAgICAgLCAoYixhKSA8LSB6aXAgKHRhaWwgeHMpIHhzXQoKICBnYXBzVyBrIChkOncpIHNAKGM6Y3MpIHwgayA8IGMgICAgID0gayA6IGdhcHNXIChrK2QpIHcgcyAgICAtLSBzZXQgZGlmZmVyZW5jZQogICAgICAgICAgICAgICAgICAgICAgICAgfCBvdGhlcndpc2UgPSAgICAgZ2Fwc1cgKGsrZCkgdyBjcyAgIC0tICAgaz09YwoKICBfWSBnID0gZyAoX1kgZykgICAgIC0tID0gZyAuIGcgLiBnIC4gZyAuIC4uLi4uLiAgICAgIC0tIHJlY3Vyc2l2ZSBmaXhwb2ludAoKICBfVSAoKHg6eHMpOnQpID0geCA6ICh1bmlvbiB4cyAuIF9VIC4gcGFpcnMpIHQgICAgICAtLSB+PSBudWIgLiBzb3J0IC4gY29uY2F0CiAgICB3aGVyZSAKICAgIHBhaXJzICh4czp5czp0KSA9IHVuaW9uIHhzIHlzIDogcGFpcnMgdAogICAgdW5pb24gYUAoeDp4cykgYkAoeTp5cykgPSBjYXNlIGNvbXBhcmUgeCB5IG9mCiAgICAgICAgIExUIC0+IHggOiB1bmlvbiAgeHMgYgogICAgICAgICBFUSAtPiB4IDogdW5pb24gIHhzIHlzCiAgICAgICAgIEdUIC0+IHkgOiB1bmlvbiAgYSAgeXMKICAgICAgICAgCm1haW4gPSBwcmludCAuIHRha2UgNSAuIGRyb3AgKDEwMDAwMDAtNCkgJCBwcmltZXNX