Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2021, 20:49   #1
Susanoo
 
Регистрация: 28.10.2021
Сообщений: 6
По умолчанию Вложенные циклы (часть кода есть)

Убедиться в том, что если числа a и b являются взаимно-простыми, то НОК(a,b) = ab.

Нужно сделать так, чтобы вводились 2 числа, выводилось значение TRUE или FALSE и выводилось НОК (как я понял, 1, если взаимно-простые, любое другое, если не взаимно-простые).

Есть код для вывода результата TRUE или FALSE. Не пойму, что добавить, чтобы выводило НОК.

Прошу помочь.

Код:
var
c, d, mult:Integer;
result: Boolean;

begin
writeln('Enter C ');
readln(c);
writeln('Enter D ');
readln(d);

  mult := c * d;
  while (c <> 0) and (d <> 0) do
    if c > d 
      then c:= c mod d
      else d:= d mod c;
      
  result:= c + d = 1;
  Writeln('The Result is ',result);
  Readln;

  end.
Susanoo вне форума Ответить с цитированием
Старый 19.11.2021, 21:44   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Вы нашли НОД, а НОК связан с НОД формулой НОК(a, b)=(a * b) / НОД(a, b). Так что осталось посчитать НОК на основе НОД и напечатать его.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 19.11.2021, 23:57   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 620
По умолчанию

Код:
Function NOD(const in1, in2:LongInt; var out1:LongInt):Boolean;
var
 i:longInt;
begin
 out1:=1;
 While (in1 mod (out1*2) = 0) and (in2 mod (out1*2) = 0) do begin
  out1:=out1*2;
 end;
 i:=3;
 While ((out1*i)<in1) and ((out1*i)<in2) do begin
  While (in1 mod (out1*i) = 0) and (in2 mod (out1*i) = 0) do begin
   out1:=out1*i;
  end;
  inc(i, 2);
 end;
 result:= (out1=1);
end;
Вводятся 2 числа, 1 число выходит, сама функция true если они взаимопростые и false если нет

Последний раз редактировалось Kronos913; 20.11.2021 в 00:16.
Kronos913 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вложенные циклы asv1994 Помощь студентам 4 06.11.2012 22:59
Вложенные циклы sumrakzone@gmail.c Паскаль, Turbo Pascal, PascalABC.NET 5 06.04.2012 18:27
Вложенные циклы DeadWind Паскаль, Turbo Pascal, PascalABC.NET 2 27.12.2011 13:50
вложенные циклы!!!! for_tuna Помощь студентам 6 08.12.2009 07:07
вложенные циклы илька Помощь студентам 4 07.12.2009 09:53