Jump to content

Sexy primes: Difference between revisions

m
→‎{{header|Haskell}}: optimized algorithm and formatted output
m (→‎{{header|Haskell}}: optimized algorithm and formatted output)
Line 685:
<lang haskell>
import Data.Maybe
import Text.Printf
import Data.Numbers.Primes
 
Line 709 ⟶ 710:
searchPairs [] = ([], [])
searchPairs p@(x:xs) = case findPairs x p of
(Just ps) -> (ps : y,z filterSecond ps)
Nothing -> (y, x : z)
where (y, z) = searchPairs xs
filterSecond ps' = if snd ps' `elem` z
then filter (/= snd ps') z
else z
 
main :: IO ()
main = do
let ps = takeWhile (< 1000035) primes
let (pairs, partUnsexyunsexy) = searchPairs ps
let triples = catMaybes $ map (findTriplets ps) pairs
let quads = catMaybes $ map (findQuadruplets ps) triples
let quins = catMaybes $ map (findQuinTuplets ps) quads
let unsexy = filter (\p -> p `notElem` asList pairs) partUnsexy
 
putStrLnprintf ("Number of sexy prime pairs: %d\n" ++ (show $ length pairs))
putStrLnprintf ("Last 5 : " ++lastFiveText (show $ lastFive pairs))
putStrLnprintf ("Number of sexy prime triplets: %d\n" ++ (show $ length triples))
putStrLnprintf ("Last 5 : " ++lastFiveText (show $ lastFive triples))
putStrLnprintf ("Number of sexy prime quadruplets: %d\n" ++ (show $ length quads))
putStrLnprintf ("Last 5 : " ++lastFiveText (show $ lastFive quads))
putStrLnprintf ("Number of sexy prime quintuplets: %d\n" ++ (show $ length quins))
putStrLnprintf (" Last 1 : %s\n\n" ++ (show quins)
putStrLnprintf ("Number of unsexy primes: %d\n" ++ (show $ length unsexy))
putStrLnprintf (" Last 10 unsexy primes: %v\n\n" ++ (show $ lastTen unsexy))
where lastFive = reverse . take 5 . reverse
lastTen = reverse . take 10 . tail . reverse
asList = snd . unzip
lastFiveText = " Last 5 : %s\n\n"
</lang>
{{out}}
<pre>
Number of sexy prime pairs: 16386
Last 5 : [(999371,999377),(999431,999437),(999721,999727),(999763,999769),(999953,999959)]
 
Number of sexy prime triplets: 2900
Last 5 : [(997427,997433,997439),(997541,997547,997553),(998071,998077,998083),(998617,998623,998629),(998737,998743,998749)]
 
Number of sexy prime quadruplets: 325
Last 5 : [(977351,977357,977363,977369),(983771,983777,983783,983789),(986131,986137,986143,986149),(990371,990377,990383,990389),(997091,997097,997103,997109)]
 
Number of sexy prime quintuplets: 1
Last 1 : [(5,11,17,23,29)]
 
Number of unsexy primes: 48628
Last 10 unsexy primes: [999853,999863,999883,999907,999917,999931,999961,999979,999983,1000003]
</pre>
 
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.