Найти тему
Я познаю Питон

Математика нужна программисту - рассматриваю конкретный пример

Нужна ли математика программисту? Этот вопрос очень популярен среди людей, которые только хотят начать программировать. Ответить однозначно нельзя, ведь не ясен уровень математической подготовки спрашивающего - без умения складывать пару чисел или просто считать в программирование точно нет смысла лезть. Но нужна ли сложная математика в повседневной работе программиста? Я не знаю, но сомневаюсь. В итоге, рассуждать об этом можно бесконечно, спекулируя областями и знаниями.

Сегодня я решил показать пример, который продемонстрирует полезность математики, как минимум в академических задачах по программированию.

Возьму первую задачу с проекта Эйлера:

Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел равна 23.
Найдите сумму всех чисел меньше 1000, кратных 3 или 5.

Решение, с использованием циклов и условий довольно простое и выполняется мгновенно:

Код с использованием цикла и условия.
Код с использованием цикла и условия.

Результат: 233168 найден за 0.000990152359008789 секунд.

Но если в этой задаче поменять условие и попросить найти сумму всех чисел меньше не тысячи, а миллиарда?

Результат: 233333333166666668 найден за... 375.5731203556061 секунд! Больше 6 минут для того, чтобы найти ответ.

Если немного подумать, попробовать решить через цикл WHILE, то можно будет сэкономить почти 3 минуты.

Результат: 233333333166666668 найден за 196.87377333641052 секунд.

И тут королевской походкой в дело вступает математика. Для решения нам нужно вспомнить школьный курс и тему арифметической прогрессии. Точнее формулу суммы арифметической прогрессии.

Формула в красной рамке. Ниже формула для прогрессии меньше 1000.
Формула в красной рамке. Ниже формула для прогрессии меньше 1000.

Далее составляем программу с использованием функции:

Код с использованием функции. В виде картинки, иначе нечитабелен.
Код с использованием функции. В виде картинки, иначе нечитабелен.

Результат мгновенный. Вот картинка со всеми тремя результатами:

Неплохой результат, благодаря математике;)
Неплохой результат, благодаря математике;)

Полезность математики для этой академической задачи заметна невооруженным взглядом. Вердикт: знать, нельзя иначе!=)