使用LINQ的素数不起作用

时间:2018-05-12 17:45:19

标签: c# linq

int limit = 100;
IEnumerable<int> primes = Enumerable.Range(2, limit - 2 + 1);

for (int i = 2; i*i <= limit; i++)
{
    primes = (from item in primes where (item % i != 0) || (item == i) select item);
}

foreach (int prime in primes) Console.WriteLine(prime);

Console.ReadKey();

这是我的代码,用于将素数从2增加到100.为什么它不起作用?求助。

1 个答案:

答案 0 :(得分:1)

您只需更改它即可捕获i的当前值。

for (int i = 2; i*i <= limit; i++)
{
    int curr = i;
    primes = (from item in primes 
              where (item % curr != 0) || (item == curr) 
              select item);
}

否则当您在结尾处迭代查询i时,所有比较都将为11。