使用Linq迭代不断变化的列表
我正试图在列表中使用。我试过这个:使用Linq迭代不断变化的列表,linq,primes,Linq,Primes,我正试图在列表中使用。我试过这个: var primeNumber = new List<int>(Enumerable.Range(2, max - 1)); primeNumber.ForEach(m => primeNumber.RemoveAll(n => n % m == 0)); var primeNumber=新列表(可枚举范围(2,最大值-1)); primeNumber.ForEach(m=>primeNumber.RemoveAll(n=>n%m==
var primeNumber = new List<int>(Enumerable.Range(2, max - 1));
primeNumber.ForEach(m => primeNumber.RemoveAll(n => n % m == 0));
var primeNumber=新列表(可枚举范围(2,最大值-1));
primeNumber.ForEach(m=>primeNumber.RemoveAll(n=>n%m==0));
但它不起作用,因为您无法迭代正在更改的列表。
有没有比创建另一个数组并通过它进行迭代更好的方法,因为我只需要通过素数进行迭代?对于第二个数组,我将删除所有可以被2除的数组,然后删除所有可以被4除的数组(应该没有),依此类推。您可能只需将数字复制到一个新数组,然后对其执行
ForEach
。我不认为有更好的方法。我选择这样做:
double maxFactor = Math.Sqrt(primeNumber.Max());
while (factor <= maxFactor)
{
factor = primeNumber.First(n => n > factor);
primeNumber.RemoveAll(n => n != factor && n % factor == 0);
}
double-maxFactor=Math.Sqrt(primeNumber.Max());
而(因子n>因子);
primeNumber.RemoveAll(n=>n!=因子和&n%factor==0);
}
它正在工作,而且仍然非常快速和干净。不要使用列表来筛选埃拉托斯烯,使用位数组。