39 lines
794 B
Text
39 lines
794 B
Text
function HarmonicNumber(N: integer): double;
|
|
{Calculate sum of }
|
|
var I: integer;
|
|
begin
|
|
Result:=0;
|
|
for I:=1 to N do Result:=Result+1/I;
|
|
end;
|
|
|
|
|
|
|
|
function FirstHarmonicOver(Limit: integer): integer;
|
|
{Find first harmonic number over limit}
|
|
var HN: double;
|
|
begin
|
|
for Result:=1 to high(Integer) do
|
|
begin
|
|
HN:=HarmonicNumber(Result);
|
|
if HN>Limit then exit;
|
|
end
|
|
end;
|
|
|
|
|
|
procedure ShowHarmonicNumbers(Memo: TMemo);
|
|
var I,Inx: integer;
|
|
var HN: double;
|
|
begin
|
|
{Show first 20 harmonic numbers}
|
|
for I:=1 to 20 do
|
|
begin
|
|
HN:=HarmonicNumber(I);
|
|
Memo.Lines.Add(Format('%2D: %8.8f',[I,HN]));
|
|
end;
|
|
{Show the position of the number that exceeds 1..10 }
|
|
for I:=1 to 10 do
|
|
begin
|
|
Inx:=FirstHarmonicOver(I);
|
|
Memo.Lines.Add(Format('Position of the first harmonic number > %2D: %4D',[I,Inx]))
|
|
end;
|
|
end;
|