[Back to MATH SWAG index] [Back to Main SWAG index] [Original]
{
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
[Back to MATH SWAG index] [Back to Main SWAG index] [Original]