Anonymous user
Sexy primes: Difference between revisions
m
→{{header|Haskell}}
Thundergnat (talk | contribs) (→{{header|Ring}}: needs improvement) |
|||
Line 686:
=={{header|Haskell}}==
Uses Library primes. https://hackage.haskell.org/package/primes (wheel sieve).
<lang haskell>import Text.Printf (printf)
import Data.Numbers.Primes (isPrime, primes)
type Triplet = (Int, Int, Int)
type Quad = (Int, Int, Int, Int)
type Quin = (Int, Int, Int, Int, Int)
data Result = Result [Pair] [Triplet] [Quad] [Quin] [Int]
groups :: Int -> Result -> Result
groups n r@(Result p t q qn u)
| isPrime (n-24) && isPrime (n-18) && isPrime (n-12) && isPrime (n-6) = Result asPair asTriplet asQuad asQuin u
| isPrime (n-18) && isPrime (n-12) && isPrime (n-6) = Result asPair asTriplet asQuad qn u
| isPrime (n-12) && isPrime (n-6) = Result asPair asTriplet q qn u
| isPrime (n-6) = Result asPair t q qn u
|
| otherwise = r
where asPair = (n-6, n) : p
asTriplet = (n-12, n-6, n) : t
asQuad = (n-18, n-12, n-6, n) : q
asQuin = (n-24, n-18, n-12, n-6, n) : qn
main :: IO ()
main = do
printf ("Number of sexy prime pairs: %d\n" ++ lastFiveText) (length pairs) (lastFive pairs)
printf ("Number of sexy prime triplets: %d\n" ++ lastFiveText) (length triplets) (lastFive triplets)
Line 735 ⟶ 718:
where (Result pairs triplets quads quins unsexy) = foldr groups (Result [] [] [] [] []) $ takeWhile (< 1000035) primes
lastFive xs = show $ drop (length xs - 5) xs
lastFiveText = " Last 5 : %s\n\n"</lang>
{{out}}
<pre>
|