123456789101112131415161718192021222324252627282930 |
- module fsieve
- import StdClass; // RWS
- import StdInt, StdReal
- NrOfPrimes :== 3000
- primes :: [Int]
- primes = pr where pr = [5 : sieve 7 4 pr]
- sieve :: Int !Int [Int] -> [Int]
- sieve g i prs
- | isPrime prs g (toInt (sqrt (toReal g))) = [g : sieve` g i prs]
- | otherwise = sieve (g + i) (6 - i) prs
- sieve` :: Int Int [Int] -> [Int]
- sieve` g i prs = sieve (g + i) (6 - i) prs
- isPrime :: [Int] !Int Int -> Bool
- isPrime [f:r] pr bd
- | f>bd = True
- | pr rem f==0 = False
- | otherwise = isPrime r pr bd
- select :: [x] Int -> x
- select [f:r] 1 = f
- select [f:r] n = select r (n - 1)
- Start :: Int
- Start = select [2, 3 : primes] NrOfPrimes
|