Для измерения времени работы программы подключаем библиотеку time.h:
#include <time.h>
С помощью функции clock() измеряем время начала (begin) и окончания (end) работы программы. В итоге время работы будем находить как разность между ними.
CLOCKS_PER_SEC – это константа, сохраненная в библиотеке и зависящая от типа устройства, на котором запускается программа. В данном случае – это просто 1000
Геометрическое решение - проект Эйлера (6 задача)
Определение квадрата суммы чисел геометрическим способом
Представим числа в виде геометрических фигур на бумаге. Одна клеточка – это 1, две – 2 и так далее.
Потому сумме чисел 1 + 2 + 3 + 4 + 5 будет соответствовать площадь фигуры, образованной этими клетками (15 клеток). На рисунке видно, что полученная фигура примерно соответствует половине квадрата со стороной 5 клеток. Однако видно, что половина клеток на диагонали квадрата не вошла (выделено зеленым на фигуре). Их нужно добавить отдельно.
В итоге получаем следующую формулу для расчета суммы чисел от 1 до 5:
(5 * 5 + 5) / 2
Т.е. берем площадь квадрата, добавляем клеточки диагонали и делим все пополам.
Определение суммы квадратов чисел геометрическим способом
А теперь представим числа в виде объемных геометрических фигур. Один кубик – это 1, четыре – это 2^2 и так далее.
Получим своеобразную пирамидку из этих кубиков.
Еще тысячу лет назад математики сообразили, что из шести таких пирамидок всегда собирается параллелепипед, определенных пропорций.
В итоге искомая формула будет:
(num * (num + 1) * (2 * num + 1)) / 6
Ответ и скорость работы программы - проект Эйлера (6 задача)
В итоге ответ на 6 задачу проекта Эйлера составил 25164150, программа работает довольно быстро (0.0 секунд).
Задача простая и вполне решается простым перебором, однако всегда лучше поискать способы оптимизации.
По традиции хотелось бы выразить глубочайшую признательность Сергею Балакиреву за его титанический труд по созданию бесплатных курсов и в частности, за “Язык программирования C/C++ для начинающих“.
Есть вопросы, господа? Отвечаем спокойно, четко и только по делу))