```Contributor: JUD MCCRANIE

{
Fibonacci for longints and comps, GCD for longint, plus LCM

Jud McCranie
jud.mccranie@camcat.com

================================================
}
function Fibonacci( n : word) : longint;

{ Fibonacci numbers, by Jud McCranie. }

var i   : word;
f1, f2, fib : longint;

begin { ----- fibonacci ----- }

if n > 46 then
begin
writeln( 'In Fibonicci - N is too large for a longint');
halt;
end;

fib := 1;
f1  := 1;
f2  := 1;

for i := 3 to n do
begin
fib := f1 + f2;
f2  := f1;
f1  := fib;
end;

Fibonacci := fib;

end; { ----- fibonacci ----- }

function FibonacciComp( n : word) : comp;

{ Fibonacci numbers, by Jud McCranie. }

var i   : word;
f1, f2, fib : comp;

begin { ----- fibonacci comp ----- }

if n > 92 then
begin
writeln( 'In Fibonicci - N is too large for a comp');
halt;
end;

fib := 1.0;
f1  := 1.0;
f2  := 1.0;

for i := 3 to n do
begin
fib := f1 + f2;
f2  := f1;
f1  := fib;
end;

FibonacciComp := fib;

end; { ----- fibonacci comp ----- }

-------------------------------------------------

function GCD( u, v : LongInt) : LongInt;

{ Greatest Common Divisor, by Jud McCranie }

var t : LongInt;

begin { --- gcd --- }

while v <> 0 do
begin
t := u mod v;
u := v;
v := t;
end;

GCD := u;

end; { --- GCD --- }

function LCM( x, y : LongInt) : LongInt;

{ Least Common Multiple, by Jud McCranie }

begin { --- lcm --- }

LCM := (x div GCD( x, y)) * y;

end; { --- LCM --- }

Jud McCranie

* Silver Xpress V4.02B03P SW20178

```