Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович
Большой Новогодний подарок от Игромистра
Безденежный доступ к видеокурсам за Мегахеши

Итератор / Итератор. Перебор простых чисел.

  • На этом уроке мы сдеаем так, чтобы наш класс возвращал в цикл
    только простые числа, как и было задуманно изначально.
  • Дата отправки отчёта: 9 апреля 2016 г.
  • Задание выполнено: за 20 мин.
  • Чему научился: Вспомнил алгоритм поиска простых чисел.
  • Что было сложным: Думать :)
  • Комментарии: Идём дальше
  • Оценка видео-уроку:
Отчёт от 6925 за Итератор / Итератор. Перебор простых чисел.




Оцени работу

 
Сохранить страницу:

  • Отчёт оценивали:
    4992Николай+1   1Евгений Волосатов+1   459Сергей Сергеевич+1   689Igorenzia+1   9237Mais+1   8835Булат+1   7645Александр Львович+1   3506Алексей|BrisK|Кривицкий+1   4467Alcatraz+1   6452Кирилл Шмойлов+1   36Данил+1   8380zhikharevav+1   8886Михаил Ермишин+1   1537Сергей+1   9932Семен0   9332Dima+1   4395Денис+1   9820Konstantin+1   7652Петя+1   5419Роман+1   9567Максим+1  

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Глубже разобрался с задачей поиска простых чисел.
Трудности: Не мог понять почему в методе IsPrime мы крутим цикл до prime/2, а не до prime-1. Но потом прочитал, что можно вообще до Math.Sqrt(prime). Также, не смог оценить мат. сложность реализации (в смысле О большого).
Стало интересно оценить скорость работы алгоритма. Использовал StopWatch. Выяснилось, что дополнительный вызов метода IsPrime значительно замедляет поиск. А переустановка SetMax(number) на каждом шаге основного цикла - здорово ускоряет работу (порядка тысячи раз). Также логика подсказывает, что при вызове IsPrime() после каждого инкремента выполняется много лишней работы, так как перебираются каждый раз практически одни и те же числа. Не лучше ли вести какой-то список уже найденных простых чисел?
Научился: Написал метод для поиска простых чисел.
Трудности: Ничего сложного, все понятно.
Отличный урок! Я уже забыл как и что называется (давно что-то читал и делал), но получается, что когда ЯВНО используем интерфейс, то есть пишем имя интерфейса, ставим точку и вызываем его метод, нам не нужно указывать модификатор. То есть мы явно реализуем интерфейсный метод из конкретного интерфейса. Это нужно, например, для того, чтобы.. Ну вот допустим, у нас есть класс, который реализует два интерфейса с одинаковыми сигнатурами. То есть и имя у них одинаковое, и параметры одинаковые у них. А нам нужно вызвать метод из первого интерфейса, а не из второго, скажем. Вот тогда мы просто пишем имя интерфейса, ставим точку и вызываем тот метод, который нам нужен. Ну и второе это то, при явной реализации интерфейсного метода, он становится доступным только по ссылке. То есть, чтобы вызывать метод 1 из интерфейса 1, мы создаем интерфейсную ссылку: Primes primes = new Primes(); IEnumerator link1 = (IEnumerator) primes; у теперь у этого obj будем вызывать метод: link1.MoveNext(); А в тексте этот метод прописан явно: bool IEnumerator.MoveNext(); Вот такие есть интересные особенности :)