我创建了一个简单的程序来计算素数如下:为什么LINQ没有像预期的那样工作?
var db = new HighScoreEntities();
List<Int64> primes = new List<Int64>(){1};
for (Int64 x = 2; x < Int64.MaxValue; x++)
{
if (primes.FirstOrDefault(y=> x%y == 0) == 0){
primes.Add(x);
db.Primes.AddObject(Prime.CreatePrime(x));
db.SaveChanges();
}
}
我的问题是,y
是走出来与225上首先通过什么似乎像后来的随机数。为什么它不通过“素数”列表进行迭代?我也尝试使用Exists函数获得相同的结果。
难道这不仅仅是寻找不能被素数整除的数字,而不是那些不能被任何数字整除的数字吗? – Reddog 2011-12-20 20:49:01
首先,如果x = 2,那么你的公式是2%y == 0,据我所知,这不是你如何计算素数。此外,Prime.CreatePrime()内部会发生什么? – 2011-12-20 20:50:51
@Reddog - 这实际上是一种有效的方法。通过综合数字检查可分性将是多余的,因为任何组合数都可以被分解为素数。 – 2011-12-20 20:51:40