Fermat numbers: Difference between revisions

Content added Content deleted
Line 730: Line 730:
<lang haskell>import Data.Numbers.Primes (primeFactors)
<lang haskell>import Data.Numbers.Primes (primeFactors)
import Data.Bool (bool)
import Data.Bool (bool)

fermat :: Integer -> Integer
fermat :: Integer -> Integer
fermat = succ . (2 ^) . (2 ^)
fermat = succ . (2 ^) . (2 ^)

fermats :: [Integer]
fermats :: [Integer]
fermats = fermat <$> [0 ..]
fermats = fermat <$> [0 ..]

--------------------------- TEST ---------------------------
---------------------------TEST----------------------------
main :: IO ()
main :: IO ()
main =
main =
Line 748: Line 746:
"Factors of first 7:"
"Factors of first 7:"
show
show
showFactors
((bool "(prime)" . show) <*> ((1 <) . length))
primeFactors
primeFactors
(take 7 fermats)
(take 7 fermats)
]
]

--------------------------DISPLAY--------------------------
------------------------- DISPLAY --------------------------
fTable :: String -> (a -> String) -> (b -> String) -> (a -> b) -> [a] -> String
fTable :: String -> (a -> String) -> (b -> String) -> (a -> b) -> [a] -> String
fTable s xShow fxShow f xs =
fTable s xShow fxShow f xs =
Line 760: Line 758:
where
where
rjust n c = drop . length <*> (replicate n c ++)
rjust n c = drop . length <*> (replicate n c ++)
w = maximum (length . xShow <$> xs)</lang>
w = maximum (length . xShow <$> xs)

showFactors :: [Integer] -> String
showFactors x
| 1 < length x = show x
| otherwise = "(prime)"</lang>
{{Out}}
{{Out}}
<pre>First 10 Fermats:
<pre>First 10 Fermats: