Long primes: Difference between revisions
Content added Content deleted
MaiconSoft (talk | contribs) (Added Delphi reference to Pascal code) |
m (→{{header|Haskell}}: Applied Hlint, Ormolu. Specified an import.) |
||
Line 832: | Line 832: | ||
</pre> |
</pre> |
||
=={{header|Haskell}}== |
=={{header|Haskell}}== |
||
<lang Haskell> |
<lang Haskell>import Data.List (elemIndex) |
||
import Data.List |
|||
longPrimesUpTo :: Int -> [Int] |
longPrimesUpTo :: Int -> [Int] |
||
longPrimesUpTo n = |
longPrimesUpTo n = |
||
⚫ | |||
where sieve (p:xs) = p : sieve [x | x <- xs, x `mod` p /= 0] |
|||
takeWhile (< n) primes |
|||
where |
|||
⚫ | |||
sieve (p : xs) = p : sieve [x | x <- xs, x `mod` p /= 0] |
|||
primes = sieve [2 ..] |
|||
⚫ | |||
isLongPrime n = found |
|||
⚫ | |||
where |
|||
_ -> False |
|||
cycles = take n (iterate ((`mod` n) . (10 *)) 1) |
|||
⚫ | |||
found = case index of |
|||
⚫ | |||
_ -> False |
|||
display :: Int -> IO () |
display :: Int -> IO () |
||
display n = |
display n = |
||
if n <= 64000 |
|||
⚫ | |||
then do |
|||
⚫ | |||
putStrLn |
|||
( show n <> " is " |
|||
⚫ | |||
) |
|||
⚫ | |||
else pure () |
|||
main :: IO () |
main :: IO () |
||
main = do |
main = do |
||
let fiveHundred = longPrimesUpTo 500 |
let fiveHundred = longPrimesUpTo 500 |
||
putStrLn |
|||
( "The long primes up to 35 are:\n" |
|||
⚫ | |||
<> show fiveHundred |
|||
⚫ | |||
<> "\n" |
|||
</lang> |
|||
) |
|||
⚫ | |||
⚫ | |||
{{out}} |
{{out}} |
||
⚫ | |||
<pre> |
|||
⚫ | |||
[7,17,19,23,29,47,59,61,97,109,113,131,149,167,179,181,193,223,229,233,257,263,269,313,337,367,379,383,389,419,433,461,487,491,499] |
[7,17,19,23,29,47,59,61,97,109,113,131,149,167,179,181,193,223,229,233,257,263,269,313,337,367,379,383,389,419,433,461,487,491,499] |
||
Line 870: | Line 881: | ||
16000 is 716 |
16000 is 716 |
||
32000 is 1300 |
32000 is 1300 |
||
64000 is 2430 |
64000 is 2430</pre> |
||
</pre> |
|||
=={{header|J}}== |
=={{header|J}}== |