Advertisement
Alex_Fomin

Untitled

Dec 8th, 2015
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.33 KB | None | 0 0
  1. uses
  2.   system, timers;
  3.  
  4. function GCD(a: int64; b: int64): int64;
  5. begin
  6.   if (A * B) = 0 then GCD := A + B
  7.   else if (A > B) then GCD := GCD(A mod B, B)
  8.   else GCD := GCD(A, B mod A);
  9. end;
  10.  
  11. var
  12.   n: int64;
  13.   flag: boolean;
  14.  
  15. begin
  16.   repeat
  17.     Console.Write('Введите число N: ');
  18.     try
  19.       n := Convert.ToInt64(Console.ReadLine());
  20.       flag := true;
  21.     except
  22.       on System.FormatException do
  23.       begin
  24.         flag := false;
  25.         Console.WriteLine('ОШИБКА: Неверный формат ввода :(');
  26.       end;
  27.     end;
  28.   until flag;
  29.   var temp := 0;
  30.   var left := 0;
  31.   var right := 0;
  32.   var aTimerStart := Milliseconds; // Старт таймера 1
  33.   for var i := 1 to n div 2 do
  34.   begin
  35.     if GCD(i, n - i) > temp then
  36.     begin
  37.       left := i;
  38.       right := n - i;
  39.       temp := GCD(i, n - i);
  40.     end;
  41.   end;
  42.   var aTimerStop := Milliseconds; // Стоп таймера 1
  43.   Console.WriteLine('Ответ: сумма чисел {0} и {1} имеет НОД. равный {2}.', left, right, GCD(left, right));
  44.   Console.WriteLine('Служебная информация:');
  45.   Console.WriteLine(' - время затраченное на выполнение программы: {0} сек / {1} мс;', (aTimerStop - aTimerStart) div 1000, aTimerStop - aTimerStart);  
  46. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement