Mersenne primes: Difference between revisions

Content added Content deleted
Line 563: Line 563:


lucasLehmer :: Int -> Bool
lucasLehmer :: Int -> Bool
lucasLehmer p = go 4 [1..p - 2] == 0
lucasLehmer p = go [1..p-2] == 0
where
where
go = foldr (\a b -> (b ^ 2 - 2) `mod` m)
go = foldr (\_ b -> (b^2 - 2) `mod` m) 4
m = 2 ^ p - 1
m = 2^p - 1


main = mapM_ (printf "M %d\n") $ take 20 mersenne
main = mapM_ (printf "M %d\n") $ take 20 mersenne