Jump to content

Sexy primes: Difference between revisions

m
m (→‎{{header|Haskell}}: second example with a single fold)
Line 708:
import Data.Numbers.Primes (isPrime, primes)
 
data Result = Result [(Int, Int)] [(Int, Int, Int)] [(Int, Int, Int, Int)] [(Int, Int, Int, Int, Int)] [Int]
 
groups :: Int -> Result -> Result
groups a r@(Result p t q qn u)
| isPrime (a-24) && isPrime (a-18) && isPrime (a-12) && isPrime (a-6) = Result asPair asTriplet asQuad asQuin u
| isPrime (a-18) && isPrime (a-12) && isPrime (a-6) = Result asPair asTriplet asQuad qn u
| isPrime (a-12) && isPrime (a-6) = Result asPair asTriplet q qn u
| isPrime (a-6) = Result asPair t q qn u
| (not $ isPrime (a+6)) && (not $ isPrime (a-6)) = Result p t q qn (a : u)
| otherwise = r
where asPair = (a-6, a) : p
Line 730 ⟶ 731:
printf "Number of unsexy primes: %d\n Last 10: %s\n\n" (length unsexy) (show $ drop (length unsexy - 10) unsexy)
where d = takeWhile (< 1000035) primes
unsexy(Result =pairs filtertriplets (\nquads ->quins (notunsexy) $= isPrimefoldr groups (n+6))Result &&[] (not[] $[] isPrime[] (n-6))[]) d
(Result pairs triplets quads quins) = foldr groups (Result [] [] [] []) d
lastFive xs = show $ drop (length xs - 5) xs
lastFiveText = " Last 5 : %s\n\n"
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.