【发布时间】:2014-11-10 19:55:46
【问题描述】:
这是我正在尝试使用的代码:这应该会生成最大为 100 的所有素数
sieve_primes = [x | x<-[2..100], y<-[2..50], z <-[2..25], (x*z) `mod` y /= 0]
【问题讨论】:
-
谢谢,很有帮助
-
Jubobs:这将产生前 100 个素数。要使所有素数达到 100,请使用
takeWhile (<= 100) primes。 -
@John Doe,那美元是干什么用的?像这样使用库:
main = print $ takeWhile (< 100) primes. -
@user3237465 您推荐使用的软件包在编译时似乎比 wiki 页面(如 6.1 和 3.10)中更快(同样不可变)的功能执行显着差课程)。其中的可变数组代码要快得多,但距离优化还很远; arithmoi package 可能应该用于此目的。
-
埃拉托色尼筛法不使用模数来检测倍数,它使用加法(或乘法)来生成它们。
标签: haskell functional-programming primes sieve-of-eratosthenes sieve