Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Haskell Prime Factorizer
import Data.List (group) -- Returns list of expanded factors of n prime_factors' :: Integer -> Integer -> [Integer] prime_factors' n d | remainder == 0 = d : prime_factors' (n `div` d) d | d <= n_sqrt = prime_factors' n (if d == 2 then 3 else d+2) | otherwise = last_factor where remainder = n `mod` d n_sqrt = truncate . sqrt $ fromInteger n last_factor = if n == 1 then [] else [n] prime_factors :: Integer -> [Integer] prime_factors n | n < 2 = [] | otherwise = prime_factors' n 2 -- Format factors exponential form list into string format' :: [Integer] -> [String] format' exp_list = [show (head x) ++ "^" ++ show (length x) | x <- group exp_list] format :: [Integer] -> String format exp_list = init . concat $ map (\x -> "(" ++ x ++ ") ") (format' exp_list) main = do let n = 1234567890 putStrLn . format $ prime_factors n
run
|
edit
|
history
|
help
0
Factorial in haskell
(Int,Int) -> Bool plot
Square root
haskell fibonacci
Monoid and friends
Bruteforce IEEE Floating Point Numbers
Lowest Common Ancestor in a Binary Tree
Haskell Fibonacci Numbers
perfect numbers
Pi