-- valがminVal以上maxVal以下の整数の約数ならTrue、そうでないならFalseを返す
isNotYakusu minVal maxVal val
= null $ filter (\a
-> (mod a val
) == 0) [minVal
.. maxVal
]
-- 条件に当てはまる数のリストを返す
-- aが奇数ならa/2の整数部分はa未満、aが偶数ならa/2はaの約数なので、範囲に含まれていてもよい
calc minVal maxVal
= filter (isNotYakusu minVal maxVal
) [11 .. (div maxVal
2)]
-- リストの各要素をsepでつなげた文字列を返す
joinList _ [] = ""
joinList sep
(l:lst
) = foldl (\s e
-> s
++ sep
++ (show e
)) (show l
) lst
-- 入力を受け取って、計算する
main = do
putStrLn $ joinList
" " $ calc minVal maxVal
LS0gdmFs44GMbWluVmFs5Lul5LiKbWF4VmFs5Lul5LiL44Gu5pW05pWw44Gu57SE5pWw44Gq44KJVHJ1ZeOAgeOBneOBhuOBp+OBquOBhOOBquOCiUZhbHNl44KS6L+U44GZCmlzTm90WWFrdXN1OjogSW50ZWdlciAtPiBJbnRlZ2VyIC0+IEludGVnZXIgLT4gQm9vbAppc05vdFlha3VzdSBtaW5WYWwgbWF4VmFsIHZhbCA9IG51bGwgJCBmaWx0ZXIgKFxhIC0+IChtb2QgYSB2YWwpID09IDApIFttaW5WYWwgLi4gbWF4VmFsXQoKLS0g5p2h5Lu244Gr5b2T44Gm44Gv44G+44KL5pWw44Gu44Oq44K544OI44KS6L+U44GZCi0tIGHjgYzlpYfmlbDjgarjgolhLzLjga7mlbTmlbDpg6jliIbjga9h5pyq5rqA44CBYeOBjOWBtuaVsOOBquOCiWEvMuOBr2Hjga7ntITmlbDjgarjga7jgafjgIHnr4Tlm7LjgavlkKvjgb7jgozjgabjgYTjgabjgoLjgojjgYQKY2FsYzo6IEludGVnZXIgLT4gSW50ZWdlciAtPiBbSW50ZWdlcl0KY2FsYyBtaW5WYWwgbWF4VmFsID0gZmlsdGVyIChpc05vdFlha3VzdSBtaW5WYWwgbWF4VmFsKSBbMTEgLi4gKGRpdiBtYXhWYWwgMildCgotLSDjg6rjgrnjg4jjga7lkITopoHntKDjgpJzZXDjgafjgaTjgarjgZLjgZ/mloflrZfliJfjgpLov5TjgZkKam9pbkxpc3Q6OiBTaG93IGEgPT4gU3RyaW5nIC0+IFthXSAtPiBTdHJpbmcKam9pbkxpc3QgXyBbXSA9ICIiCmpvaW5MaXN0IHNlcCAobDpsc3QpID0gZm9sZGwgKFxzIGUgLT4gcyArKyBzZXAgKysgKHNob3cgZSkpIChzaG93IGwpIGxzdAoKLS0g5YWl5Yqb44KS5Y+X44GR5Y+W44Gj44Gm44CB6KiI566X44GZ44KLCm1haW46OiBJTyAoKQptYWluID0gZG8KICAgIG1pblZhbCA8LSByZWFkTG4KICAgIG1heFZhbCA8LSByZWFkTG4KICAgIHB1dFN0ckxuICQgam9pbkxpc3QgIiAiICQgY2FsYyBtaW5WYWwgbWF4VmFsCg==