Нужна ли математика программисту? Этот вопрос очень популярен среди людей, которые только хотят начать программировать. Ответить однозначно нельзя, ведь не ясен уровень математической подготовки спрашивающего - без умения складывать пару чисел или просто считать в программирование точно нет смысла лезть. Но нужна ли сложная математика в повседневной работе программиста? Я не знаю, но сомневаюсь. В итоге, рассуждать об этом можно бесконечно, спекулируя областями и знаниями.
Сегодня я решил показать пример, который продемонстрирует полезность математики, как минимум в академических задачах по программированию.
Возьму первую задачу с проекта Эйлера:
Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел равна 23.
Найдите сумму всех чисел меньше 1000, кратных 3 или 5.
Решение, с использованием циклов и условий довольно простое и выполняется мгновенно:
Результат: 233168 найден за 0.000990152359008789 секунд.
Но если в этой задаче поменять условие и попросить найти сумму всех чисел меньше не тысячи, а миллиарда?
Результат: 233333333166666668 найден за... 375.5731203556061 секунд! Больше 6 минут для того, чтобы найти ответ.
Если немного подумать, попробовать решить через цикл WHILE, то можно будет сэкономить почти 3 минуты.
Результат: 233333333166666668 найден за 196.87377333641052 секунд.
И тут королевской походкой в дело вступает математика. Для решения нам нужно вспомнить школьный курс и тему арифметической прогрессии. Точнее формулу суммы арифметической прогрессии.
Далее составляем программу с использованием функции:
Результат мгновенный. Вот картинка со всеми тремя результатами:
Полезность математики для этой академической задачи заметна невооруженным взглядом. Вердикт: знать, нельзя иначе!=)