PLINQ结果错误,并且在不同的运行中有所不同

时间:2014-01-30 08:56:38

标签: c# plinq

我正在学习PLINQ。我尝试了在网站上给出的例子。但是我可以看到结果是错误的,并且当我多次重新运行程序时也会有所不同。首先它没有给出所有素数,第二个它只给出9591个随机素数。

IEnumerable<int> numbers = Enumerable.Range (3, 100000-3);

var parallelQuery = 
  from n in numbers.AsParallel()
  where Enumerable.Range (2, (int) Math.Sqrt (n)).All (i => n % i > 0)
  select n;

int[] primes = parallelQuery.ToArray();

感谢任何帮助!

1 个答案:

答案 0 :(得分:7)

有9592个素数低于100,000,而你的范围不包括2,这是一个素数。

素数的顺序会有所不同,因为你没有对它们进行排序,也无法控制PLINQ如何将作品分成平行块。