Впаскаль: цикл с предусловием а) найти наименьшее общее кратное двух заданных натуральных чисел. б) дано натуральное число. найти его наименьший делитель, отличный от 1. , !

Vasilek2006 Vasilek2006    2   24.06.2019 02:50    0

Ответы
vasad2005 vasad2005  02.10.2020 09:57
1. Для нахождения НОД используем алгоритм Евклида.

var
  a, b, i: integer;

begin
  Write('Введите два натуральных числа '); Readln(a, b);
  while b <> 0 do
  begin
    a := a mod b;
    i := b; b := a; a := i
  end;
  Writeln('НОД этих чисел равен ', a)
end.

Тестовое решение:
Введите два натуральных числа 3264 1296
НОД этих чисел равен 48

2. Тут все намного проще, алгоритм очевиден.

var
  a, i: integer;

begin
  Write('Введите натуральное число '); Readln(a);
  i := 2;
  while (a mod i) <> 0 do i := i + 1;
  Writeln('Минимальный делитель равен ', i)
end.

Тестовое решение:
Введите натуральное число 187
Минимальный делитель равен 11
ПОКАЗАТЬ ОТВЕТЫ
дашаdaria12 дашаdaria12  02.10.2020 09:57
A) For i := 2 to min ( a, b ) do
      if ( a mod i = 0 ) and ( b mod i = 0 ) then
        begin
          write('НОД ( ', a, ' ', b, ' ) = ', i );
          break;
        end;
б) For i := 2 to n do
      if ( n mod i = 0 ) then
        begin
          write('НД ( ', n, ' ) = ', i );
          break;
        end;
прощения, но мне уже нужно идти спать... а кто-нибудь другой вряд-ли
Если что, можете написать мне личное письмо, я на него постараюсь завтра ответить.
С уважением.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика