Написать программу на паскале.дано n целых чисел. найти среди них пару чисел, для которых наименьшее общее кратное имеет наименьшее значение.

Снежана341 Снежана341    2   10.06.2019 15:30    0

Ответы
gladkova2002d gladkova2002d  08.07.2020 22:57
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
ПОКАЗАТЬ ОТВЕТЫ
rgn123 rgn123  08.07.2020 22:57
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.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика