function NOK(a, b: integer): integer; var c: integer; begin if a = b then NOK := a else begin c := a * b; repeat if a > b then a := a - b else b := b - a; until a = b; NOK := c div a end end;
var a: array[1..m] of integer; i, j, n, p, q, nk, mn: integer;
begin Randomize; Write('Введите количество элементов в массиве (2..50)- '); Readln(n); Writeln('Исходный массив'); for i := 1 to n do begin a[i] := Random(100) + 1; Write(a[i], ' ') end; Writeln; p := a[i]; q := a[2]; mn := p * q; for i := 1 to n - 1 do for j := i + 1 to n do begin nk := NOK(a[i], a[j]); if (mn > nk) then begin p := a[i]; q := a[j]; mn := nk end end; Writeln('Пара: ', p, '-', q, ' НОК=', mn); end.
Function NOK(a, b: integer): integer; var c, d, e: integer; begin c := a; d := b; while (d > 0) do begin c := c mod d; e := c; c := d; d := e; end; result := (a div c) * b; end;
const n = 4;
var a: array [1..n] of integer; b: array [1..n*n] of integer; i, j, min_: integer;
begin writeln('Введите n целых чисел, только вот давайте без нулей, детсадовцы знают, что на 0 делить нельзя, плохо это'); min_ := 2147483647; for i := 1 to n do readln(a[i]); for i := 1 to n do for j := 1 to n do begin if (i = j) then continue; b[i + n * (j - 1)] := nok(a[i], a[j]); min_ := min(b[i + n * (j - 1)], min_); end; write(' '); for i := 1 to n do write(i:5); writeln(); for i := 1 to n do begin write(i:5); for j := 1 to n do write(b[i + n * (j - 1)]:5); writeln(); end; writeln('min: ', min_); end.
m = 50;
function NOK(a, b: integer): integer;
var
c: integer;
begin
if a = b then NOK := a
else begin
c := a * b;
repeat
if a > b then a := a - b else b := b - a;
until a = b;
NOK := c div a
end
end;
var
a: array[1..m] of integer;
i, j, n, p, q, nk, mn: integer;
begin
Randomize;
Write('Введите количество элементов в массиве (2..50)- ');
Readln(n);
Writeln('Исходный массив');
for i := 1 to n do
begin
a[i] := Random(100) + 1;
Write(a[i], ' ')
end;
Writeln;
p := a[i];
q := a[2];
mn := p * q;
for i := 1 to n - 1 do
for j := i + 1 to n do
begin
nk := NOK(a[i], a[j]);
if (mn > nk) then
begin
p := a[i];
q := a[j];
mn := nk
end
end;
Writeln('Пара: ', p, '-', q, ' НОК=', mn);
end.
Тестовое решение:
Введите количество элементов в массиве (2..50)- 20
Исходный массив
19 36 99 86 79 83 73 69 27 14 87 67 49 84 98 79 38 4 60 22
Пара: 14-4 НОК=28
var
c, d, e: integer;
begin
c := a;
d := b;
while (d > 0) do
begin
c := c mod d;
e := c;
c := d;
d := e;
end;
result := (a div c) * b;
end;
const
n = 4;
var
a: array [1..n] of integer;
b: array [1..n*n] of integer;
i, j, min_: integer;
begin
writeln('Введите n целых чисел, только вот давайте без нулей, детсадовцы знают, что на 0 делить нельзя, плохо это');
min_ := 2147483647;
for i := 1 to n do
readln(a[i]);
for i := 1 to n do
for j := 1 to n do
begin
if (i = j) then continue;
b[i + n * (j - 1)] := nok(a[i], a[j]);
min_ := min(b[i + n * (j - 1)], min_);
end;
write(' ');
for i := 1 to n do
write(i:5);
writeln();
for i := 1 to n do
begin
write(i:5);
for j := 1 to n do
write(b[i + n * (j - 1)]:5);
writeln();
end;
writeln('min: ', min_);
end.