我創建了一個簡單的程序來計算素數如下:爲什麼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