ответ суммы ряда из n натуральных можно найти двумя способами. Первый способ - добавление всех чисел в цикле. в этом случае алгоритм является линейным и код будет таким:
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += n;
}
return sum;
аналогично 1 + 2 + 3 + 4 + ...... + n. в этом случае сложность алгоритма рассчитывается как число выполненных операций сложения, которое равно O (n).
Второй способ найти ответ суммы ряда из n натуральных чисел - это самая строгая формула n * (n + 1) / 2. эта формула использует умножение вместо повторного сложения. Операция умножения не имеет линейной сложности по времени. Существуют различные алгоритмы для умножения, которые имеют временную сложность в диапазоне от O (N ^ 1.45) до O (N ^ 2). следовательно, в случае умножения время сложность зависит от архитектуры процессора. но для целей анализа временная сложность умножения рассматривается как O (N ^ 2). следовательно, если использовать второй способ для нахождения суммы, сложность по времени будет равна O (N ^ 2)
здесь операция умножения отличается от операции сложения. если кто-то знает предмет организации компьютера, он может легко понять внутреннюю работу операций умножения и сложения Схема умножения является более сложной, чем схема сумматора, и для вычисления результата требуется намного больше времени, чем схема сумматора. таким образом, временная сложность суммы ряда не может быть постоянной.