Предмет: Информатика,
автор: mesteron98
Написать программу на паскале.Дано n целых чисел. Найти среди них пару чисел, для которых наименьшее общее кратное имеет наименьшее значение.
Ответы
Автор ответа:
0
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.
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.
Автор ответа:
0
const
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
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
Похожие вопросы
Предмет: Қазақ тiлi,
автор: ziko077
Предмет: Английский язык,
автор: SamSmidt
Предмет: Английский язык,
автор: svgg
Предмет: Физика,
автор: V1TaL1Na