Miller–Rabin primality test: Difference between revisions

Content added Content deleted
Line 499: Line 499:


isMillerRabinPrime :: Integer -> IO Bool
isMillerRabinPrime :: Integer -> IO Bool
isMillerRabinPrime n =
isMillerRabinPrime n | n `elem` primesTo100 = return True
| otherwise = do
if n `elem` primesTo100 then return True
else do
let pn = pred n
let pn = pred n
e = uncurry (++) . second(take 1) . span even . iterate (`div` 2) $ pn
e = uncurry (++) . second(take 1) . span even . iterate (`div` 2) $ pn