я создал простую программу для вычисления простых чисел следующим образом:Почему 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
Во-первых, если x = 2, то ваша формула равна 2% y == 0, что, насколько я знаю, это не то, как вы вычисляете простое. Далее, что происходит в Prime.CreatePrime()? –
@ Реддог - это действительно действительный подход. проверка делимости на составные числа будет излишней, так как любое составное число может быть факторизовано в простые числа в любом случае. –