-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpl0_read_code_1
More file actions
109 lines (109 loc) · 1.59 KB
/
pl0_read_code_1
File metadata and controls
109 lines (109 loc) · 1.59 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
0 const m = 7, n = 85;
1
1 var x, y, z, q, r;
1
1
1
1 procedure multiply;
1
1 var a, b;
2
2 begin
3
3 a := x; b := y; z := 0;
9
9 while b > 0 do
13
13 begin
13
13 if odd b then z := z + a;
20
20 a := 2*a ;
24
24 b := b/2 ;
28
28 end
28
28 end;
30
30
30
30 procedure divide;
30
30 var w;
31
31 begin
32
32 r := x; q := 0; w := y;
38
38 while w <= r do w := 2*w ;
47
47 while w > y do
51
51 begin
51
51 q := 2*q; w := w/2;
59
59 if w <= r then
62
62 begin
63
63 r := r-w;
67
67 q := q+1
69
69 end
71
71 end
71
71 end;
73
73
73
73 procedure gcd;
73
73 var f, g;
74
74 begin
75
75 f := x;
77
77 g := y;
79
79 while f <> g do
83
83 begin
83
83 if f < g then g := g-f;
91
91 if g < f then f := f-g;
99
99 end;
100
100 z := f
101
101 end;
103
103
103
103 begin
104
104 x := m;
106
106 y := n;
108
108 call multiply;
109
109 x := 25;
111
111 y := 3;
113
113 call divide;
114
114 x := 84;
116
116 y := 36;
118
118 call gcd;
119
119 end.