Sexy primes: Difference between revisions

Content added Content deleted
No edit summary
Line 706: Line 706:
findQuinTuplets xs (p1, p2, p3, p4) = (\(np1, np2) -> (p1, p2, p3, p4, np2)) <$> findPairs p4 xs
findQuinTuplets xs (p1, p2, p3, p4) = (\(np1, np2) -> (p1, p2, p3, p4, np2)) <$> findPairs p4 xs


searchPairs :: [Int] -> [(Int, Int)]
searchPairs :: [Int] -> ([(Int, Int)], [Int])
searchPairs [] = []
searchPairs [] = ([], [])
searchPairs p@(x:xs) = case findPairs x p of
searchPairs p@(x:xs) = case findPairs x p of
(Just ps) -> ps : searchPairs xs
(Just ps) -> (ps:y,z)
Nothing -> searchPairs xs
Nothing -> (y,x:z)
where (y, z) = searchPairs xs


main :: IO ()
main :: IO ()
main = do
main = do
let ps = takeWhile (< 1000035) primes
let ps = takeWhile (< 1000035) primes
let pairs = searchPairs ps
let (pairs, unsexy') = searchPairs ps
let triples = catMaybes $ map (findTriplets ps) pairs
let triples = catMaybes $ map (findTriplets ps) pairs
let quads = catMaybes $ map (findQuadruplets ps) triples
let quads = catMaybes $ map (findQuadruplets ps) triples
let quins = catMaybes $ map (findQuinTuplets ps) quads
let quins = catMaybes $ map (findQuinTuplets ps) quads
let sexy = asList pairs
let unsexy = filter (\p -> p `notElem` asList pairs) unsexy'
let unsexy = filter (\p -> p `notElem` sexy) ps


putStrLn ("Number of sexy prime pairs: " ++ (show $ length pairs))
putStrLn ("Number of sexy prime pairs: " ++ (show $ length pairs))
Line 734: Line 734:
where lastFive = reverse . take 5 . reverse
where lastFive = reverse . take 5 . reverse
lastTen = reverse . take 10 . tail . reverse
lastTen = reverse . take 10 . tail . reverse
asList p = fst t ++ snd t
asList = snd . unzip
where t = unzip p
</lang>
</lang>
{{out}}
{{out}}
Line 750: Line 749:
Last 10 unsexy primes: [999853,999863,999883,999907,999917,999931,999961,999979,999983,1000003]
Last 10 unsexy primes: [999853,999863,999883,999907,999917,999931,999961,999979,999983,1000003]
</pre>
</pre>

=={{header|Java}}==
=={{header|Java}}==
<lang java>
<lang java>