55 lines
980 B
Text
55 lines
980 B
Text
include "cowgol.coh";
|
|
|
|
sub vc(n: uint16, base: uint16): (num: uint16, denom: uint16) is
|
|
var p: uint16 := 0;
|
|
var q: uint16 := 1;
|
|
|
|
while n != 0 loop
|
|
p := p * base + n % base;
|
|
q := q * base;
|
|
n := n / base;
|
|
end loop;
|
|
|
|
num := p;
|
|
denom := q;
|
|
|
|
while p != 0 loop
|
|
n := p;
|
|
p := q % p;
|
|
q := n;
|
|
end loop;
|
|
|
|
num := num / q;
|
|
denom := denom / q;
|
|
end sub;
|
|
|
|
sub printfrac(num: uint16, denom: uint16) is
|
|
if num == 0 then
|
|
print(" 0");
|
|
else
|
|
print(" ");
|
|
print_i16(num);
|
|
print("/");
|
|
print_i16(denom);
|
|
end if;
|
|
end sub;
|
|
|
|
var i: uint16;
|
|
var base: uint16;
|
|
var num: uint16;
|
|
var denom: uint16;
|
|
|
|
base := 2;
|
|
while base < 6 loop
|
|
print("base ");
|
|
print_i16(base);
|
|
print(":");
|
|
i := 0;
|
|
while i < 10 loop
|
|
(num, denom) := vc(i, base);
|
|
printfrac(num, denom);
|
|
i := i + 1;
|
|
end loop;
|
|
print_nl();
|
|
base := base + 1;
|
|
end loop;
|