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

Rr0 Rr0    2   23.08.2019 05:20    9

Ответы
// PascalABC.NET 3.2, сборка 1385 от 14.02.2017
// Внимание! Если программа не работает, обновите версию!

procedure NOD_NOK(a,b:integer; var NOD,NOK:integer);
begin
  (var p,var q):=(a,b);
  while q>0 do (p,q):=(q,p mod q);
  NOD:=p; NOK:=a*b div NOD
end;

begin
  var a,b,c,d:integer; Read(a,b);
  NOD_NOK(a,b,c,d);
  Writeln('НОД=',c,', НОК=',d)
end.

Пример
138 42
НОД=6, НОК=966
ПОКАЗАТЬ ОТВЕТЫ
Trumpumpum Trumpumpum  02.08.2020 21:19

program qq; 
uses crt; 
procedure NOD_NOK(n1,n2:integer;var a,b:integer); 
var m:integer; 
begin 
if n1>n2 then m:=n1 else m:=n2; 
a:=m-1; 
repeat 
a:=a+1 
until ((a mod n1)=0) and ((a mod n2)=0); 
while n1<>n2 do 
if n1>n2 then n1:=n1-n2 else n2:=n2-n1; 
b:=n1; 
end; 
var y,x,a,b:integer; 
begin 
repeat 
writeln('Введите 2 натуральных числа:'); 
read(x,y); 
until(x>0)and(y>0); 
NOD_NOK(x,y,a,b); 
writeln('NOD(',x,',',y,')=',b); 
writeln('NOK(',x,',',y,')=',a); 
end.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика