Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
18
Task/Almost-prime/Haskell/almost-prime.hs
Normal file
18
Task/Almost-prime/Haskell/almost-prime.hs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
isPrime :: Integral a => a -> Bool
|
||||
isPrime n = not $ any ((0 ==) . (mod n)) [2..(truncate $ sqrt $ fromIntegral n)]
|
||||
|
||||
primes :: [Integer]
|
||||
primes = filter isPrime [2..]
|
||||
|
||||
isKPrime :: (Num a, Eq a) => a -> Integer -> Bool
|
||||
isKPrime 1 n = isPrime n
|
||||
isKPrime k n = any (isKPrime (k - 1)) sprimes
|
||||
where
|
||||
sprimes = map fst $ filter ((0 ==) . snd) $ map (divMod n) $ takeWhile (< n) primes
|
||||
|
||||
kPrimes :: (Num a, Eq a) => a -> [Integer]
|
||||
kPrimes k = filter (isKPrime k) [2..]
|
||||
|
||||
main :: IO ()
|
||||
main = flip mapM_ [1..5] $ \k ->
|
||||
putStrLn $ "k = " ++ show k ++ ": " ++ (unwords $ map show (take 10 $ kPrimes k))
|
||||
Loading…
Add table
Add a link
Reference in a new issue