1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
PROGRAM sumharmonics (input, output);
CONST
firstterm = 2;
VAR
numerator, denominator,
lastterm, termcount : integer;
PROCEDURE lowterm (VAR num, den : integer);
VAR
numcopy, dencopy, remainder : integer;
BEGIN
numcopy := num;
dencopy := den;
WHILE dencopy <> 0 DO
BEGIN
remainder := numcopy MOD dencopy;
numcopy := dencopy;
dencopy := remainder;
END; { while }
IF numcopy > 1
THEN
BEGIN
num := num DIV numcopy;
den := den DIV numcopy;
END
END; { lowterm }
PROCEDURE addrationals (VAR num1, den1 : integer;
num2, den2 : integer);
BEGIN
num1 := num1 * den2 + num2 * den1;
den1 := den1 * den2;
END; { addrationals }
BEGIN { sumharmonics }
numerator := 1;
denominator := 1;
READ (lastterm);
FOR termcount := firstterm TO lastterm DO
BEGIN
addrationals (numerator, denominator, 1, termcount);
lowterm (numerator, denominator);
WRITELN (numerator, '/', denominator)
END; { for }
END. {sumharmonics}
|