Project Euler (названный в честь Леонарда Эйлера ) - это веб-сайт, посвященный ряду вычислительных задач, предназначенных для решения с помощью компьютерных программ. [1] [2] Проект привлекает взрослых и студентов, интересующихся математикой и компьютерным программированием . С момента своего создания в 2001 году Колином Хьюзом проект Euler приобрел известность и популярность во всем мире. [3] Он включает более 750 задач [4], причем примерно каждые две недели добавляется новая. [5] Проблемы разной сложности, но каждая из них решается менее чем за минуту процессорного времени с использованием эффективного алгоритма на компьютере со скромной мощностью. По состоянию на 27 апреля 2021 г.[Обновить], Project Euler насчитывает более 1 000 000 пользователей, которые решили хотя бы одну проблему на более чем 100 различных языках программирования. [6]
Тип сайта | Веб-сайт по решению задач по вычислительной математике |
---|---|
Создано | Колин Хьюз |
URL | projecteuler.net |
Коммерческий | Нет |
Регистрация | Бесплатно |
Запущен | 5 октября 2001 г. |
Особенности сайта
Форум, посвященный каждому вопросу, можно просмотреть после того, как пользователь правильно ответил на данный вопрос. [7] Проблемы можно сортировать по идентификатору, количеству решенных проблем и сложности. Участники могут отслеживать свой прогресс по уровням достижений в зависимости от количества решенных задач. Новый уровень достигается за каждые 25 решенных задач. Существуют специальные награды за решение особых комбинаций задач. Например, есть награда за решение пятидесяти задач с простыми номерами. Для отслеживания достижений существует специальный уровень «Эйлера», основанный на пятидесяти самых быстрых решениях недавних проблем, так что новые участники могут соревноваться, не решая старые проблемы. [8]
Пример проблемы и решения
Первая проблема проекта Эйлера - это умножение на 3 и 5.
Если мы перечислим все натуральные числа ниже 10, которые кратны 3 или 5, мы получим 3, 5, 6 и 9. Сумма этих кратных 23.
Найдите сумму всех кратных 3 или 5 ниже 1000.
Хотя эта проблема намного проще, чем типичная проблема, она служит для иллюстрации потенциальной разницы, которую создает эффективный алгоритм. Перебор алгоритм анализирует каждое натуральное число меньше , чем 1000 и держит бегущую сумму, отвечающие критерии. Этот метод прост в реализации, о чем свидетельствует следующий псевдокод :
total : = 0 для NUM от 1 до 999 сделать, если NUM mod 3 = 0 или NUM mod 5 = 0, то total : = total + NUM вернуть итог
Решения на Python (язык программирования) (автор Agnimandur ) и Befunge (автор JarJar ). [9]
N = 1000 print ( sum ([ i for i in range ( N ) if i % 3 == 0 or i % 5 == 0 ]))
25 * : * 25 ** 1 - 00 р 010 р > 00 г 3 % # v _ 10 г 00 г + 10 р v | р 00 : - 1 г 00 < < < @ . г 01 < > ^ > 00 г 5 % # v _ 10 г 00 г + 10 р ^ ^ <
Для более сложных задач становится все более важным найти эффективный алгоритм. Для этой задачи мы можем сократить 1000 операций до нескольких, используя принцип включения-исключения и формулу суммирования в замкнутой форме .
Здесь, обозначает сумму кратных ниже . В нотации большой O алгоритм грубой силы выглядит так: и эффективный алгоритм (при условии арифметических операций с постоянным временем).
Смотрите также
Рекомендации
- ^ Сури, Манил (2015-10-12). «Важность развлекательной математики» . Нью-Йорк Таймс . Проверено 5 июня 2018 .
- ^ Фут, Стивен (2014). Учимся программировать . Учебные серии Аддисона-Уэсли. Pearson Education. п. 249. ISBN 9780789753397.
- ^ Джеймс Сомерс (июнь 2011 г.). «Как я потерпел неудачу, потерпел неудачу и, наконец, преуспел в обучении программированию - технологии» . Атлантика . Проверено 14 декабря 2013 .
- ^ «Проект Эйлер (список задач)» . Проверено 27 апреля 2021 года .
- ^ «Новости - Проект Эйлер» . projecteuler.net . Проверено 27 апреля 2021 .
- ^ «Проект Эйлер (Статистика)» . Проверено 27 апреля 2021 года .
- ^ «Проект Эйлер - О проекте» . Проверено 4 апреля 2008 .
- ^ «Проект Эйлер (Архив новостей)» . Проверено 31 марта 2015 .
- ^ «О проекте - Проект Эйлер» . projecteuler.net . Проверено 6 мая 2021 .
Внешние ссылки
- Домашняя страница
- Ссылки на проекты переводов на несколько других языков