Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2016, 16:44   #1
rogge
Пользователь
 
Регистрация: 02.12.2015
Сообщений: 15
По умолчанию Подскажите, что делает данный код

Здравствуйте, не могли бы пожалуйста расписать, что делает каждая строчка в этом коде...пожалуйста, просто в С# я полный ноль
Задание следующие:
Реализуется последовательный и параллельный алгоритмы поиска простых чисел. Параллельный алгоритм: применение пула потоков .
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics;

namespace Lab2
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("N=");
                int n = Convert.ToInt32(Console.ReadLine());

                int nq = (int)Math.Sqrt(n);

                Console.WriteLine("N = " + n);
                Console.WriteLine("Простые числа в диапозоне от 2 до " + nq + ": ");
                int[] numbers = searchPrime(nq);
                for (int i = 0; i < numbers.Length; i++)
                {
                    Console.Write(numbers[i] + " ");
                }

                Stopwatch sw = new Stopwatch();
                sw.Start();


                ManualResetEvent[] events = new ManualResetEvent[numbers.Length];

                bool[] trigers = new bool[n + 1];
                for (int i = 0; i < numbers.Length; i++)
                {
                    events[i] = new ManualResetEvent(false);

                    int num = numbers[i];
                    WaitCallback callback = new WaitCallback((e) =>
                    {
                        ManualResetEvent done = (ManualResetEvent)e;

                        for (int j = num; j <= n; j += num)
                        {
                            if (!trigers[j])
                            {
                                trigers[j] = true;
                            }
                        }

                        done.Set();
                    });

                    ThreadPool.QueueUserWorkItem(callback, events[i]);
                }

                WaitHandle.WaitAll(events);

                sw.Stop();
                double time = sw.Elapsed.TotalMilliseconds;


                Console.WriteLine();

                Console.WriteLine("Простые числа в диапозоне от " + nq + " до " + n + ": ");
                for (int i = nq; i <= n; i++)
                {
                    if (!trigers[i])
                        Console.Write(i + " ");
                }

                Console.WriteLine();
                Console.WriteLine("Число потоков: " + numbers.Length);
                Console.WriteLine("Время: " + time + " мс");

                Console.ReadKey();
            }
        }

        static int[] searchPrime(int n)
        {

            bool[] trigers = new bool[n + 1];
            for (int m = 2; m <= n; m++)
            {
                if (!trigers[m])
                {
                    for (int i = m + m; i <= n; i += m)
                    {
                        trigers[i] = true;
                    }
                }
            }

           
            List<int> numbers = new List<int>();
            for (int m = 2; m <= n; m++)
            {
                if (!trigers[m])
                {
                    numbers.Add(m);
                }
            }
            return numbers.ToArray();
        }
    }
}
rogge вне форума Ответить с цитированием
Старый 03.12.2016, 16:53   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Забивайте непонятное в переводчик и читайте. В большинстве мест данного кода большего не надо.
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что делает данный Regexp с исходной строкой? motorway Мобильные ОС (Android, iOS, Windows Phone) 7 15.07.2013 23:13
Что делает данный JS (там есть такие ф-ии как getElementsByTagName и getElementById) TwiX JavaScript, Ajax 5 05.02.2010 19:49
Подскажите пожалуйста что делает этот код SlashMan JavaScript, Ajax 3 10.01.2010 22:41
Подскажите, что делает данный скрипт на JS? GandaIf JavaScript, Ajax 1 22.08.2009 09:19
Excel 2007/ А что он делает в данный момент? kzld Microsoft Office Excel 10 30.03.2009 11:14