列表,阵列和可变阵列之间的Eratosthenes筛选的理想实现是什么? [英] What's the ideal implementation for the Sieve of Eratosthenes between Lists, Arrays, and Mutable Arrays?

查看:118
本文介绍了列表,阵列和可变阵列之间的Eratosthenes筛选的理想实现是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Haskell中,我已经在罗塞塔代码页

中找到了Eratosthenes Sieve的三个简单实现, a>。

现在我的问题是,应该在哪种情况下使用哪一种?



更正我的初始推理也是有帮助的: 我假设列表1是最习惯且容易阅读的为一个Haskeller。虽然这是正确的吗?我想知道它是否会遇到与另一个基于列表的筛选相同的问题,然后我学到了实际上并未实现该算法:
$ b $ em(编辑:此处显示的是基于列表的筛选器I知道有问题,而不是来自RosettaCode的,我将其粘贴在底部)

  primes = sieve [2 ..]其中
sieve(p:x)= p:sieve [n | n <-x,n`mod` p> 0]

在性能方面,不可变数组似乎是赢家。上限 m 2000000 ,时间约为:

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆