![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Как найти наибольший общий делительDelphi , Синтаксис , МатематикаАвтор: http://www.swissdelphicenter.ch { The greatest common factor, or GCF, is the greatest factor that divides two numbers. } uses math; // Find the greatest common factor of two integers function TForm1.GCF(A, B: Integer): Integer; var Lfactor: Integer; begin // Return -1 if either value is zero or negative if (A < 1) or (B < 1) then begin Result := -1; Exit; end; // if A = B then this is the GCF if A = B then begin Result := A; Exit; end; Result := 1; for Lfactor := trunc(max(A, B) / 2) downto 2 do begin if (frac(A / Lfactor) = 0) and (frac(B / Lfactor) = 0) then begin Result := Lfactor; Exit; // GCF has been found. No need to continue end; end; end; // Example: procedure TForm1.Button1Click(Sender: TObject); var Res: Integer; begin Res := GCF(120, 30); ShowMessage(Inttostr(Res)); end; {******************} // Find the greatest common factor of an array of integers function TForm1.GCFarray(A: array of Integer): Integer; var Llength, Lindex, Lfactor: Integer; begin Llength := Length(A); // Return -1 if any value is zero or negative for Lindex := 0 to Llength - 1 do begin if A[Lindex] < 1 then begin Result := -1; Exit; end; end; // if all elements are equal then this is the GCF Lindex := 1; while (Lindex < Llength) and (A[Lindex] = A[0]) do Inc(Lindex); if Lindex = Llength then begin Result := A[0]; Exit; end; Result := 1; for Lfactor := trunc(ArrayMax(A) / 2) downto 2 do begin Lindex := 0; while (Lindex < Llength) and (frac(A[Lindex] / Lfactor) = 0) do Inc(Lindex); if Lindex = Llength then begin Result := Lfactor; Exit; // GCF has been found. No need to continue end; end; end; // find the maximum value in an array of integers function TForm1.ArrayMax(Aarray: array of Integer): Integer; var Lpos: Integer; begin Result := 0; for Lpos := 0 to Length(Aarray) - 1 do if Aarray[Lpos] > Result then Result := Aarray[Lpos]; end; Перевод контента на русский язык: Программа Delphi для расчета наибольшего общего делителя (НОД) двух целых чисел и массива целых чисел. НОД - это наибольший положительный целый, который делит оба числа без остатка. Вот разбивка кода:
В примере кода обработчик события клика кнопки вызывает функцию Некоторые предложения по улучшению:
В целом, код хорошо структурирован и легко читаем. С несколькими минимальными улучшениями он может стать еще более эффективным и поддерживаемым. В статье описывается алгоритм для поиска наибольшего общего делителя (НОД) двух целых чисел и массива целых чисел с помощью программирования на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |