19 lines
532 B
Haskell
19 lines
532 B
Haskell
import Data.Numbers.Primes
|
|
import Data.List (intercalate)
|
|
import Data.List.Split (chunksOf)
|
|
|
|
series :: Integer -> Integer -> [(Integer, Integer)]
|
|
series = go
|
|
where
|
|
go i n
|
|
| isPrime i = (n, i) : go (i + i) (succ n)
|
|
| otherwise = go (succ i) n
|
|
|
|
showPair :: (Integer, Integer) -> String
|
|
showPair (i, n) = show i ++ " -> " ++ showInteger n
|
|
|
|
showInteger :: Integer -> String
|
|
showInteger = reverse . intercalate "," . chunksOf 3 . reverse . show
|
|
|
|
main :: IO ()
|
|
main = mapM_ (putStrLn . showPair) (take 42 $ series 42 1)
|