В настоящее время меня интересует LINQ. Я пытаюсь получить простые числа. Я на самом деле очень хорошо, но мой код не показывает простые числа, которые ниже Sqrt (n).C# Prime Numbers with LINQ
static void Main(string[] args)
{
Func<int, int, IEnumerable<int>> EnumerableRange =
(startPoint, endPoint) =>
Enumerable.Range(Math.Min(startPoint, endPoint), Math.Abs(startPoint - endPoint) + 1);
Func<int, int, bool> isFullyDivided =
(value, divisor) =>
(value % divisor).Equals(0);
int sp = 2,
ep = 100;
var query =
EnumerableRange(sp, ep)
.Where(value =>
EnumerableRange(2, (int)Math.Ceiling(Math.Sqrt(ep)))
.Any(divisor =>
isFullyDivided(value, divisor))
);
var primeNumbers =
EnumerableRange(sp, ep)
.Except(query);
foreach (var item in primeNumbers)
{
Console
.WriteLine(item);
}
Console
.Read();
}
В настоящее время этот код неправильно выходит из простых чисел, которые меньше sqrt(n)
. Предполагается, что код получает простые числа от 2 до 100. Вместо этого он печатает только простые числа 11 и выше. Пропуски 2, 3, 5, 7
отсутствуют.
Можете ли вы уточнить, как ваш код не работает? – ryanyuyu
В следующем коде представлены простые числа 11 и выше. Ниже 11, которые отсутствуют 2, 3, 5, 7. – Artxzta