Вопрос задан 17.01.2026 в 07:26. Предмет Информатика. Спрашивает Рудской Дамир.

Вычислить сумму ряда чисел 1 + 1/2 + 1/3 + ... + 1/n, где n вводится пользователем.

Перейти к ответам

Ответы на вопрос

Отвечает Белгородский Никита.

Если коротко, сумма Sn=1+12+13++1nS_n = 1 + \frac12 + \frac13 + \dots + \frac1n — это nn-е гармоническое число HnH_n. Его можно посчитать напрямую простым циклом.

Алгоритм

  1. Введите nn (целое n1n \ge 1).

  2. Инициализируйте сумму S0S \leftarrow 0.

  3. Для k=1,2,,nk = 1,2,\dots,n прибавляйте SS+1kS \leftarrow S + \frac{1}{k}.

  4. Выведите SS.

Сложность по времени — O(n)O(n), по памяти — O(1)O(1).

Пример

Для n=5n = 5:

S=1+12+13+14+15=1+0,5+0,3333+0,25+0,2=2,28333S = 1 + \tfrac12 + \tfrac13 + \tfrac14 + \tfrac15 = 1 + 0{,}5 + 0{,}3333\ldots + 0{,}25 + 0{,}2 = 2{,}28333\ldots

Код (варианты)

Python

python
n = int(input().strip()) s = 0.0 for k in range(1, n + 1): s += 1.0 / k print(s)

C++

cpp
#include #include using namespace std;

int main() { long long n; if (!(cin >> n) || n < 1) return 0; long double s = 0.0L; for (long long k = 1; k <= n; ++k) s += 1.0L / k; cout << setprecision(17) << s << "\n"; return 0; }

Замечания по точности

  • Для больших nn обычный тип float может терять точность; используйте double/long double.

  • Если nn очень велико и нужен лишь приблизительный ответ без цикла, можно воспользоваться асимптотикой:

    Hnlnn+γ+12n112n2,H_n \approx \ln n + \gamma + \frac{1}{2n} - \frac{1}{12n^2},

    где γ0,5772156649\gamma \approx 0{,}577\,215\,6649.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос