Skip to content

Instantly share code, notes, and snippets.

@viviag
Last active December 8, 2022 18:13
Show Gist options
  • Save viviag/e954902950ca1bb9907d2e8a5ed9890d to your computer and use it in GitHub Desktop.
Save viviag/e954902950ca1bb9907d2e8a5ed9890d to your computer and use it in GitHub Desktop.
Brute force analogue of computation in orders.hs (https://gist.github.com/viviag/cfe9b791d57e208a97369919baf968cb)
type Order = Integer
type Element = Integer
order :: Order -> Element -> Order
order p elem = order' p elem elem 1
where
order' _ 1 _ ord = ord
order' p power elem ord = order' p (power*elem `mod` p) elem (ord+1)
elemsOfOrder :: Order -> Order -> [Element]
elemsOfOrder p d = filter (\elem -> order p elem == d) [1..p-1]
main :: IO ()
main = do
putStr "Insert modulus: "
p <- read <$> getLine
putStr "Insert order of element: "
ord <- read <$> getLine
print $ elemsOfOrder p ord
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment