我在这个网站上发现了这个LINQ网关的eratosthenes网筛的实施。我理解筛的基本概念,但是我没有看到一个细节。第一个Enumerable.Range(0,168)的目的是什么?帮助了解eratosthenes网筛的实施情况
List<int> erathostheness = Enumerable.Range(0, 168)
.Aggregate(Enumerable.Range(2, 1000000).ToList(), (result, index) =>
{
result.RemoveAll(i => i > result[index] && i % result[index] == 0);
return result;
}).ToList();
这是**而不是Eratosthenes **的Sieve,它只会使用添加来从数组中剔除合成数字; **这是一个试验部分总理筛**,因为它通过试验分区消除了一定范围内的合成数并测试了非零余数。它是一种优化版本,因为它只能被找到的素数所区分。它不是一个精确的优化,因为它需要至少估计直到该范围的平方根的质数(因为范围1000000中的质数为1000到1000)。更好的版本是[这里](http://stackoverflow.com/a/1510186/549617)。 – GordonBGood 2014-04-30 07:41:17