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 ..] |
||
⚫ | |||
⚫ | |||
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 -------------------------- |
||
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) |
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: |