Nickolay.info. Алгоритмы. Наименьшие числа, не имеющие общих делителей

Даны натуральные числа m, n. Найти наименьшие m1, n1, не имеющие общих делителей и такие, что m1/n1 = m/n.

uses crt;
var m,n,m1,n1,d:word;
 
Function NOD ( X,Y : Word ) : Word ;
(* Алгоритм Евклида - ищем наибольший общий делитель *)
Begin
 While ( X <> 0 ) and ( Y <> 0 ) Do
  If X > Y Then X := X mod Y
  Else Y := Y mod X ;
 NOD := X + Y
End;
 
begin
 clrscr;
 repeat
  write ('Введите натуральные M,N:');
  {$I-}
  read (m,n);
  {$I+}
  if (n<2) or (m<2) then writeln ('Числа должны быть больше 1!')
 until (m>1) and (n>1);
 clrscr;
 WriteLn (' M=',M,'  N=',N);
 d:=Nod(m,n);
 If d<>1 Then Begin
  m1:=m div d; n1:=n div d;
 End
 Else Begin
  m1:=m; n1:=n;
 End;
 WriteLn ('M1=',M1,' N1=',N1);
 Reset (input); Readln;
end.

Рейтинг@Mail.ru

вверх гостевая; E-mail