两种方式,下面的效率稍高一些。 primes = sieve [2..] where sieve (x:l) = x : sieve [y | y <- l, mod y x > 0] primes' = 2:sieve [3,5..] where sieve (x:l) = x : sieve [y | y <- l, if y>=x*x then mod y x > 0 else True]