Проект Эйлер - Project Euler
Тип сайта | Веб-сайт для решения проблем |
---|---|
Создан | Колин Хьюз |
URL | projecteuler.net |
Коммерческий | Нет |
Постановка на учет | Свободный |
Запущен | 5 октября 2001 г. |
Проект Эйлер (названный в честь Леонард Эйлер ) - это веб-сайт, посвященный ряду вычислительных задач, предназначенных для решения с помощью компьютерных программ.[2][3] Проект привлекает взрослых и студентов, интересующихся математика и компьютерное программирование. С момента своего создания в 2001 году Колином Хьюзом проект Euler приобрел известность и популярность во всем мире.[4] Включает более 700 задач,[5] с добавлением нового каждые одну или две недели. Проблемы бывают разной сложности, но каждая из них может быть решена менее чем за минуту процессорного времени с использованием эффективного алгоритма на компьютере со скромной мощностью. По состоянию на 5 апреля 2020 г.[Обновить], Project Euler насчитывает более 1 000 000 пользователей со всего мира, которые решили хотя бы одну проблему.[6]
Особенности сайта
Форум, посвященный каждому вопросу, можно просмотреть после того, как пользователь правильно ответил на данный вопрос.[7] Проблемы можно сортировать по идентификатору, количеству решенных проблем и сложности. Участники могут отслеживать свой прогресс по уровням достижений в зависимости от количества решенных задач. Новый уровень достигается за каждые 25 решенных задач. Существуют специальные награды за решение особых комбинаций задач. Например, есть награда за решение пятидесяти задач с простыми номерами. Для отслеживания достижений существует специальный уровень «Эйлера», основанный на пятидесяти самых быстрых решениях недавних проблем, так что новые участники могут соревноваться, не решая старые проблемы.[8]
Пример проблемы и решения
Первая проблема проекта Эйлера:
Если мы перечислим все натуральные числа ниже 10, которые кратны 3 или 5, мы получим 3, 5, 6 и 9. Сумма этих кратных 23.
Найдите сумму всех кратных 3 или 5 ниже 1000.
Хотя эта проблема намного проще, чем типичная проблема, она служит для иллюстрации потенциальной разницы, которую создает эффективный алгоритм. В грубая сила алгоритм проверяет каждое натуральное число меньше 1000 и сохраняет текущую сумму тех, которые соответствуют критериям. Этот метод прост в реализации, как показано ниже. псевдокод:
Всего := 0для NUM от 1 до 999 делать если NUM мод 3 = 0 или NUM мод 5 = 0 тогда Всего := Всего + NUMвернуть Всего
Для более сложных задач становится все более важным найти эффективный алгоритм. Для этой проблемы мы можем сократить 1000 операций до нескольких, используя принцип включения-исключения и закрытая форма суммирование формула.
Вот, обозначает сумму кратных ниже .В нотация большой O, алгоритм перебора О(п) и эффективный алгоритм О(1) (при условии арифметических операций с постоянным временем).
Смотрите также
использованная литература
- ^ "Обзор сайта Projecteuler.net". Alexa Интернет. Получено 22 октября 2018.
- ^ Сури, Манил (12.10.2015). «Важность развлекательной математики». Нью-Йорк Таймс. Получено 2018-06-05.
- ^ Фут, Стивен (2014). Обучение программированию. Учебные серии Аддисона-Уэсли. Pearson Education. п. 249. ISBN 9780789753397.
- ^ Джеймс Сомерс (июнь 2011 г.). «Как я потерпел неудачу, потерпел неудачу и, наконец, преуспел в обучении программированию - технологии». Атлантический океан. Получено 2013-12-14.
- ^ «Проект Эйлер (список проблем)». Получено 2020-05-05.
- ^ «Project Euler (Статистика) - требуется авторизация». Получено 2019-06-10.
- ^ «Проект Эйлер - О проекте». Получено 2008-04-04.
- ^ "Проект Эйлер (Архив новостей)". Получено 2015-03-31.
внешние ссылки
- Домашняя страница
- Ссылки на Переводческие проекты на несколько других языков