diff --git a/23.hs b/23.hs index 722f1ea..63b403f 100644 --- a/23.hs +++ b/23.hs @@ -61,8 +61,7 @@ runInstructions instructions state@(State _ pos cnt) = count :: Int count = - foldr (\b h -> h + (fromEnum . any id . map ((== 0) . (b `mod`)) $ [2..squareroot b])) 0 [108100, 108117..125083] - where squareroot = floor . sqrt . fromIntegral + foldr (\b h -> h + (fromEnum . or . map (\d -> b `mod` d == 0) $ [2..(floor . sqrt . fromIntegral) b])) 0 [108100, 108117..125100] main :: IO () main = do diff --git a/23b.c b/23b.c index c398dd6..a6afa6e 100644 --- a/23b.c +++ b/23b.c @@ -13,14 +13,14 @@ unsigned int naiveCount() { } } } - h += !f + h += !f; } return h; } unsigned int count() { unsigned short h = 0; - for (long b = 108100; b < 125100; b += 17) { + for (long b = 108100; b <= 125100; b += 17) { bool f = true; for (unsigned short d = 2; f && d * d <= b; d++) { if (b % d == 0) {