Разное
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Группировка TopAdvGrid
Категория: Компоненты
Категория: Компоненты
Как подключить или отключить сетевой диск
Категория: Интернет и Сети
Категория: Интернет и Сети
Получить типы полей таблицы
Категория: Базы данных
Категория: Базы данных
Сохранение странички в файл из TWebBrowser
Категория: Интернет и Сети
Категория: Интернет и Сети
Упаковать *.mdb-файл
Категория: Базы данных
Категория: Базы данных
Функции дат в SQL
Категория: Базы данных
Категория: Базы данных
Создание и удаление полей
Категория: Базы данных
Категория: Базы данных
Замена подстроки в строке
Категория: Текст и строки
Категория: Текст и строки
Вычислить логарифм
Категория: Математика
Категория: Математика
Удалить пробелы в начале и конце
Категория: Текст и строки
Категория: Текст и строки
Delphi - База Знаний: Как найти наибольший общий делитель
{
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;