Guest User

primes, at GHCi prompt

a guest
Aug 27th, 2020
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- testing https://stackoverflow.com/a/63603526/849891
  2. -- by https://stackoverflow.com/users/849891/will-ness
  3.  
  4. > let primes = map head $ scanl (O.minus) [2..] [[p,p+p..] | p <- primes] in take 100 primes
  5. Loading package data-ordlist-0.4.7.0 ... linking ... done.
  6. [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,
  7. 137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,
  8. 271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,
  9. 431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541]
  10. it :: (Ord a, Num a, Enum a) => [a]
  11. (0.00 secs, 0 bytes)
  12.  
  13.  
  14. > :{
  15.   let
  16.   oprimes = map head $
  17.          scanl (O.minus . tail) [3,5..] [[p*p,p*p+2*p..] | p <- oprimes]
  18.  
  19.   primes = 2 : oprimes
  20.  
  21.   primesUpTo n = 2 : map head a ++ takeWhile (<= n) b
  22.      where
  23.      (a,b:_) = span ((<= n) . (^2) . head) $
  24.          scanl (O.minus . tail) [3,5..] [[p*p,p*p+2*p..] | p <- oprimes]
  25.   in
  26.   primesUpTo 545
  27.   :}
  28. [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,
  29. 137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,
  30. 271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,
  31. 431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541]
  32. it :: (Ord a, Num a, Enum a) => [a]
  33. (0.00 secs, 26798496 bytes)
Add Comment
Please, Sign In to add comment