Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,27 @@
import Data.List
import Control.Monad (guard)
isPrime :: Int -> Bool
isPrime n
| n <= 3 = n > 1
| n `mod` 2 == 0 || n `mod` 3 == 0 = False
| otherwise = l2 5 n
where l2 d n = x > n || l3 d n
where x = d * d
l3 d n
| n `mod` d == 0 = False
| n `mod` (d + 2) == 0 = False
| otherwise = l2 (d + 6) n
showPrime :: Int -> Int -> [(Int, Int)]
showPrime i n = if isPrime i
then (n, i) : showPrime (i+i) (n+1)
else showPrime (i+1) n
digitGroup :: Int -> String
digitGroup = intercalate "," . reverse . map show . unfoldr (\n -> guard (n /= 0) >> pure (n `mod` 1000, n `div` 1000))
display :: (Int, Int) -> String
display (i, p) = show i ++ " " ++ digitGroup p
main = mapM_ (putStrLn . display) $ take 42 $ showPrime 42 1

View file

@ -0,0 +1,19 @@
import Data.Numbers.Primes
import Data.List (intercalate)
import Data.List.Split (chunksOf)
series :: Integer -> Integer -> [(Integer, Integer)]
series = go
where
go i n
| isPrime i = (n, i) : go (i + i) (succ n)
| otherwise = go (succ i) n
showPair :: (Integer, Integer) -> String
showPair (i, n) = show i ++ " -> " ++ showInteger n
showInteger :: Integer -> String
showInteger = reverse . intercalate "," . chunksOf 3 . reverse . show
main :: IO ()
main = mapM_ (putStrLn . showPair) (take 42 $ series 42 1)