Поиск по разделу «Программирование»

Вычисление суммы гармонического ряда

Pas.0011. Напишите программу, которая выводит частичную сумму гармонического ряда. Для удобства анализа роста суммы выводите
только значения суммы и номера элемента ряда, когда сумма «перепрыгивает» очередное целое значение.
Гармонический ряд — это числовая последовательность вида \(
a_n = \dfrac 1n \). Сумма гармонического ряда \[
1 + \dfrac 12 + \dfrac 13 + \ldots + \dfrac 1n + \dfrac 1{n+1} + \ldots
\]
Решение.
program HarmonicSequenceSum;

const
    LAST = 9999999;

var
    n: longint;
    past, present : integer;
    sum: real;

begin

    sum := 0;
  
    for n := 1 to LAST do
    begin
  
        past := trunc(sum);
        sum := sum + 1/n;
        present := trunc(sum);
    
        if (present > past) or (n = LAST) then
            writeln('sum = ', sum:12:9, ' (n = ', n:7, ')');    
    end
end.
Консоль.
sum =  1.000000000 (n =       1)
sum =  2.083333333 (n =       4)
sum =  3.019877345 (n =      11)
sum =  4.027245195 (n =      31)
sum =  5.002068273 (n =      83)
sum =  6.004366708 (n =     227)
sum =  7.001274097 (n =     616)
sum =  8.000485572 (n =    1674)
sum =  9.000208063 (n =    4550)
sum = 10.000043008 (n =   12367)
sum = 11.000017709 (n =   33617)
sum = 12.000003052 (n =   91380)
sum = 13.000001229 (n =  248397)
sum = 14.000001362 (n =  675214)
sum = 15.000000378 (n = 1835421)
sum = 16.000000095 (n = 4989191)
sum = 16.695311266 (n = 9999999)