Главная страница | назад





Article #17895: Getting the Lowest common denominator.

 Question and Answer Database

FAQ2895D.txt   Getting the Lowest common denominator.
Category   :Object Pascal
Platform    :All
Product    :All 32 bit  

Question:
How do I convert two numbers representing a ratio to a string
that represents a fraction of the lowest common denominator?


Answer:
The following example demonstrates a technique based on 
equations originally solved by Euclid in approx. 300 B.C. :

Example:

function GetFracStr(Num1 : integer;
                    Num2 : integer) : string;
var
  N1 : integer;
  N2 : integer;
  Tmp : integer;
begin
  if Num1 < Num2 then begin
    N1 := Num1;
    N2 := Num2;
  end else begin
    N1 := Num2;
    N2 := Num1;
  end;
  Tmp := N2 mod N1;
  while Tmp <> 0 do begin
    N2 := N1;
    N1 := Tmp;
    Tmp := N2 mod N1;
  end;
  result := IntToStr(Num1 div N1) + '/' + IntToStr(Num2 div N1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Add(GetFracStr(2, 64));
end;


7/16/98 4:31:28 PM
 

Last Modified: 01-SEP-99