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.为什么它不起作用?求助。
答案 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。