Sexy primes: Difference between revisions
Content added Content deleted
No edit summary |
(→{{header|Haskell}}: optimized) |
||
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 |
(Just ps) -> (ps:y,z) |
||
Nothing -> |
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 |
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 |
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> |