module PrimesUI (run) where import Utils (askChoice, askNumber) import Primes (fermatPrimeTest, millerRabin, solovayStrassen) run :: IO () run = do putStrLn "Primality tests" putStrLn "1) Fermat primality test" putStrLn "2) Miller–Rabin test" putStrLn "3) Solovay–Strassen test" choice <- askChoice 3 n <- askNumber "Enter integer n > 1 to test for primality:" k <- askNumber "Enter security parameter k (number of rounds):" result <- case choice of 1 -> fermatPrimeTest n k 2 -> millerRabin n k 3 -> solovayStrassen n k _ -> error "Impossible choice" putStrLn ("n = " ++ show n) putStrLn ("k = " ++ show k) if result then putStrLn "Result: probably prime." else putStrLn "Result: composite."