Параллельная проверка диапазона чисел на простоту - C#

Формулировка задачи:

Как произвести поиск всех простых чисел в заданном пользователем диапазоне, используя параллельные вычисления?

Код к задаче: «Параллельная проверка диапазона чисел на простоту - C#»

textual
        static void Main(string[] args)
        {
            System.Collections.Concurrent.ConcurrentBag<int> primes = new System.Collections.Concurrent.ConcurrentBag<int>();
            int a = int.Parse(Console.ReadLine());
            int b = int.Parse(Console.ReadLine());
 
            var range = Enumerable.Range(a, b - a); //b не включено
            Parallel.ForEach(range, (n) =>
               {
                   if (IsPrime(n))
                       primes.Add(n);
               });
            Console.WriteLine($"Prime numbers founded: {primes.Count}");
            Console.ReadKey();
        }
 
        static bool IsPrime(int number)
        {
            if (number == 1) return false;
            if (number == 2) return true;
            if (number % 2 == 0) return false;
 
            var boundary = (int)Math.Sqrt(number);
 
            for (int i = 3; i <= boundary; i += 2)
            {
                if (number % i == 0) return false;
            }
 
            return true;
        }
    }
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

11   голосов, оценка 4.000 из 5


СДЕЛАЙТЕ РЕПОСТ