Welcome to the new DelphiDabbler Code Library Documentation.

This is a new site that's currently running on alpha code. There are going to be bugs. If you discover any, please report them on the site's issues page (GitHub account required). Thanks.

Warning: Many URLs are going to change. Refer to the README file to discover which library project's documentation has been completed.

LCD class method

Project: Fractions

Unit: DelphiDabbler.Lib.Fractions

Record: TFraction

Applies to: ~>0.1

class function LCD(const A, B: TFraction): Int64; static;

Description

Returns the least common denominator of the two fraction A and B.

Example

Here’s a little procedure that uses LCD and Convert to convert two fractions to have the same denominator.

procedure MakeSameDenominator(var A, B: TFraction);
var
  Common: Int64;
begin
  Common := TFraction.LCD(A, B);
  A := A.Convert(Common div A.Denominator);
  B := B.Convert(Common div B.Denominator);
end;

To test this use code such is this:

procedure Convert(A, B: TFraction);
begin
  Write(
    Format(
      '%d/%d and %d/%d => ',
      [A.Numerator, A.Denominator, B.Numerator, B.Denominator]
    )
  );
  MakeSameDenominator(A, B);
  WriteLn(
    Format(
      '%d/%d and %d/%d',
      [A.Numerator, A.Denominator, B.Numerator, B.Denominator]
    )
  );
end;

procedure Test;
var
  A, B: TFraction;
begin
  A := TFraction.Create(1, 4);
  B := TFraction.Create(5, 6);
  Convert(A, B);
  A := TFraction.Create(-1, 3);
  B := TFraction.Create(5, 6);
  Convert(A, B);
  A := TFraction.Create(11, 7);
  B := TFraction.Create(3, 5);
  Convert(A, B);
  A := TFraction.Create(3, 8);
  B := TFraction.Create(3, 12);
  Convert(A, B);
end;

Running this test program writes the following:

1/4 and 5/6 => 3/12 and 10/12
-1/3 and 5/6 => -2/6 and 5/6
11/7 and 3/5 => 55/35 and 21/35
3/8 and 3/12 => 9/24 and 6/24

See Also