Miller–Rabin primality test: Difference between revisions

Content added Content deleted
Line 503: Line 503:
else do
else do
let pn = pred n
let pn = pred n
e = until (odd . last) ((++) `ap` (return. (`div` 2). last)) [pn]
(xs,y:_) = span even $ iterate (`div` 2) pn
e = xs ++ [y]
try = return . all (\a -> let c = map (powerMod n a) e in
try = return . all (\a -> let c = map (powerMod n a) e in
pn `elem` c || last c == 1)
pn `elem` c || last c == 1)