我正在学习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();
感谢任何帮助!
答案 0 :(得分:7)
有9592个素数低于100,000,而你的范围不包括2,这是一个素数。
素数的顺序会有所不同,因为你没有对它们进行排序,也无法控制PLINQ如何将作品分成平行块。