Primes whose sum of digits is 25: Difference between revisions

→‎{{header|Haskell}}: Added a Haskell example
m (added a category.)
(→‎{{header|Haskell}}: Added a Haskell example)
Line 253:
Took 25.300758564s
</pre>
 
=={{header|Haskell}}==
<lang haskell>import Data.Bifunctor (second)
import Data.List (replicate)
import Data.List.Split (chunksOf)
import Data.Numbers.Primes (primes)
 
--------- PRIMES WITH DECIMAL DIGITS SUMMING TO 25 -------
 
matchingPrimes :: [Int]
matchingPrimes =
takeWhile
(< 5000)
[n | n <- primes, 25 == decimalDigitSum n]
 
decimalDigitSum :: Int -> Int
decimalDigitSum n =
snd $
until
((0 ==) . fst)
(\(n, x) -> second (+ x) $ quotRem n 10)
(n, 0)
 
--------------------------- TEST -------------------------
main :: IO ()
main = do
let w = length (show (last matchingPrimes))
mapM_ putStrLn $
( show (length matchingPrimes)
<> " primes (< 5000) with decimal digits totalling 25:\n"
) :
( unwords
<$> chunksOf
4
(justifyRight w ' ' . show <$> matchingPrimes)
)
 
justifyRight :: Int -> Char -> String -> String
justifyRight n c = (drop . length) <*> (replicate n c <>)</lang>
{{Out}}
<pre>17 primes (< 5000) with decimal digits totalling 25:
 
997 1699 1789 1879
1987 2689 2797 2887
3499 3697 3769 3877
3967 4597 4759 4957
4993</pre>
 
=={{header|Nanoquery}}==
9,659

edits