Параллельная проверка диапазона чисел на простоту - 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;
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы