program NWD_a_b;
type tab=array[1..10] of integer;
lst = record
elementy: tab;
ile: integer
end;
var
a, b, c: integer; (* a,b - liczby >1, których NWD poszukujemy, c- wyliczony NWD(a,b)*)
x, i, j, k, l: integer; (* x - zm. pom. do liczenia czynn. pierwszych; i,j,k,l - zm. iterac.*)
p, q, r: lst; (* p i q listy niepuste i niemalejące!
p - lista czynników pierwszych liczby a,
q - lista czynników pierwszych liczby b,
r - lista elementów wspólnych p i q *)
begin
writeln('poczatek');
read(a); x:=a; k:=2; i:=1;
p.ile := 0;
while x > 1 do
begin
if x mod k = 0 then
begin
p.ile := p.ile + 1;
p.elementy[p.ile] := k;
x := x div k;
end
else k := k + 1;
end;
read(b); x:=b; k:=2; i:=1;
q.ile := 0;
while x > 1 do
begin
if x mod k = 0 then
begin
q.ile := q.ile + 1;
q.elementy[q.ile] := k;
x := x div k;
end
else k := k + 1;
end;
writeln('NWD(',a,',',b,')=?');
writeln('p.ile=',p.ile,' ','q.ile=',q.ile);
write('Czynniki pierwsze ',a,': ');
for i := 1 to p.ile do write(p.elementy[i], ' ');
writeln('');
write('Czynniki pierwsze ',b,': ');
for i := 1 to q.ile do write(q.elementy[i], ' ');
writeln('');
l:=1; j:=1; k:=0;
while (l <= p.ile) and (j <= q.ile) do
begin
if p.elementy[l] < q.elementy[j] then
l := l + 1
else if p.elementy[l] > q.elementy[j] then
j := j + 1
else
begin
(* p.elementy[l] = q.elementy[j] - elementy są równe *)
k := k + 1;
r.elementy[k] := p.elementy[l];
l := l + 1;
j := j + 1;
end;
end;
r.ile := k;
write('Czynniki pierwsze wspólne: ');
for i := 1 to r.ile do write(r.elementy[i], ' ');
writeln('');
c := 1;
for i := 1 to r.ile do c := c * r.elementy[i];
writeln('NWD(',a,',',b,')=',c);
writeln('koniec');
end.
cHJvZ3JhbSBOV0RfYV9iOwp0eXBlIHRhYj1hcnJheVsxLi4xMF0gb2YgaW50ZWdlcjsKICAgICBsc3QgPSByZWNvcmQgCiAgICAgICAgICAgICAgICBlbGVtZW50eTogdGFiOwogICAgICAgICAgICAgICAgaWxlOiBpbnRlZ2VyCiAgICAgICAgICAgICBlbmQ7CnZhciAKICAgIGEsIGIsIGM6IGludGVnZXI7ICgqIGEsYiAtIGxpY3pieSA+MSwga3TDs3J5Y2ggTldEIHBvc3p1a3VqZW15LCBjLSB3eWxpY3pvbnkgTldEKGEsYikqKQogICAgeCwgaSwgaiwgaywgbDogaW50ZWdlcjsgKCogeCAtIHptLiBwb20uIGRvIGxpY3plbmlhIGN6eW5uLiBwaWVyd3N6eWNoOyBpLGosayxsIC0gem0uIGl0ZXJhYy4qKQogICAgcCwgcSwgcjogbHN0OyAgKCogIHAgaSBxIGxpc3R5IG5pZXB1c3RlIGkgbmllbWFsZWrEhWNlISAKICAgICAgICAgICAgICAgICAgICAgICBwIC0gbGlzdGEgY3p5bm5pa8OzdyBwaWVyd3N6eWNoIGxpY3pieSBhLAogICAgICAgICAgICAgICAgICAgICAgIHEgLSBsaXN0YSBjenlubmlrw7N3IHBpZXJ3c3p5Y2ggbGljemJ5IGIsCiAgICAgICAgICAgICAgICAgICAgICAgciAtIGxpc3RhIGVsZW1lbnTDs3cgd3Nww7NsbnljaCBwIGkgcSAgICopCiAgICAKYmVnaW4gCiAgICB3cml0ZWxuKCdwb2N6YXRlaycpOwogICAgcmVhZChhKTsgeDo9YTsgazo9MjsgaTo9MTsKICAgIHAuaWxlIDo9IDA7ICAgCiAgICB3aGlsZSB4ID4gMSBkbwoJCWJlZ2luCiAgICAJCWlmIHggbW9kIGsgPSAwIHRoZW4KICAgIAkJCWJlZ2luCiAgICAJCQkJIHAuaWxlIDo9IHAuaWxlICsgMTsKICAgIAkJCQkgcC5lbGVtZW50eVtwLmlsZV0gOj0gazsKICAgIAkJCQl4IDo9IHggZGl2IGs7CiAgICAJCQllbmQKICAgIAkJCWVsc2UgayA6PSBrICsgMTsKCQllbmQ7CiAgICAKICAgICAgCiAgICByZWFkKGIpOyB4Oj1iOyBrOj0yOyBpOj0xOwogICAgcS5pbGUgOj0gMDsKICAgIHdoaWxlIHggPiAxIGRvCgkJYmVnaW4KICAgIAkJaWYgeCBtb2QgayA9IDAgdGhlbgogICAgCQkJYmVnaW4KICAgIAkJCQlxLmlsZSA6PSBxLmlsZSArIDE7CiAgICAJCQkJcS5lbGVtZW50eVtxLmlsZV0gOj0gazsKICAgIAkJCQl4IDo9IHggZGl2IGs7CiAgICAJCQllbmQKICAgIAkJCWVsc2UgayA6PSBrICsgMTsKCQllbmQ7CiAgICAKICAgCiAgICB3cml0ZWxuKCdOV0QoJyxhLCcsJyxiLCcpPT8nKTsgCiAgICB3cml0ZWxuKCdwLmlsZT0nLHAuaWxlLCcgJywncS5pbGU9JyxxLmlsZSk7CiAgICB3cml0ZSgnQ3p5bm5pa2kgcGllcndzemUgJyxhLCc6ICcpOwogICAgZm9yIGkgOj0gMSB0byBwLmlsZSBkbyB3cml0ZShwLmVsZW1lbnR5W2ldLCAnICcpOwoJd3JpdGVsbignJyk7Cgl3cml0ZSgnQ3p5bm5pa2kgcGllcndzemUgJyxiLCc6ICcpOwoJZm9yIGkgOj0gMSB0byBxLmlsZSBkbyB3cml0ZShxLmVsZW1lbnR5W2ldLCAnICcpOwoJd3JpdGVsbignJyk7CgkKICAgIGw6PTE7IGo6PTE7IGs6PTA7Cgl3aGlsZSAobCA8PSBwLmlsZSkgYW5kIChqIDw9IHEuaWxlKSBkbwoJCWJlZ2luCiAgICAJCWlmIHAuZWxlbWVudHlbbF0gPCBxLmVsZW1lbnR5W2pdIHRoZW4KICAgIAkJCWwgOj0gbCArIDEKICAgIAkJZWxzZSBpZiBwLmVsZW1lbnR5W2xdID4gcS5lbGVtZW50eVtqXSB0aGVuCiAgICAJCQlqIDo9IGogKyAxCiAgICAJCWVsc2UKICAgIAkJCWJlZ2luCiAgICAJCQkJKCogcC5lbGVtZW50eVtsXSA9IHEuZWxlbWVudHlbal0gLSBlbGVtZW50eSBzxIUgcsOzd25lICopCiAgICAJCQkJayA6PSBrICsgMTsKICAgIAkJCQlyLmVsZW1lbnR5W2tdIDo9IHAuZWxlbWVudHlbbF07CiAgICAJCQkJbCA6PSBsICsgMTsKICAgIAkJCQlqIDo9IGogKyAxOwogICAgCQkJZW5kOwoJCWVuZDsKCXIuaWxlIDo9IGs7CiAgICB3cml0ZSgnQ3p5bm5pa2kgcGllcndzemUgd3Nww7NsbmU6ICcpOwoJZm9yIGkgOj0gMSB0byByLmlsZSBkbyB3cml0ZShyLmVsZW1lbnR5W2ldLCAnICcpOwoJd3JpdGVsbignJyk7ICAgICAKCWMgOj0gMTsKCWZvciBpIDo9IDEgdG8gci5pbGUgZG8gYyA6PSBjICogci5lbGVtZW50eVtpXTsgCiAgICB3cml0ZWxuKCdOV0QoJyxhLCcsJyxiLCcpPScsYyk7CiAgICB3cml0ZWxuKCdrb25pZWMnKTsKZW5kLg==