Quantos números são primos para
?
isPrime n = all (/= 0) . map (n `mod`) $ [2..squareRoot n] where squareRoot = truncate . sqrt . fromIntegral list = map (subtract 1 . (*2) . (^2)) [2..] -- 2n^2-1 main = do putStrLn . show $ solveit 10000 -- caso de controlo putStrLn . show $ solveit 50000000 -- caso em estudo where solveit n = length . filter isPrime $ take (n-1) list
Colocando a fórmula numa função à parte:
-- isPrime... list = map t [2..] t = subtract 1 . (*2) . (^2) -- t(n) = 2n^2-1 main = do -- output... where solveit n = length . filter isPrime $ takeWhile (<= (t n)) list