43 lines
869 B
Text
43 lines
869 B
Text
include "cowgol.coh";
|
|
|
|
sub abs(n: int32): (r: uint32) is
|
|
if n<0 then
|
|
r := (-n) as uint32;
|
|
else
|
|
r := n as uint32;
|
|
end if;
|
|
end sub;
|
|
|
|
sub printcol(n: int32, s: uint8) is
|
|
var buf: uint8[12];
|
|
var ptr := IToA(n, 10, &buf[0]);
|
|
s := s - (ptr - &buf[0]) as uint8;
|
|
while s>0 loop
|
|
print_char(' ');
|
|
s := s-1;
|
|
end loop;
|
|
print(&buf[0]);
|
|
end sub;
|
|
|
|
sub lagarias(n: int32): (r: int32) is
|
|
var nn := abs(n);
|
|
r := 0;
|
|
if nn<2 then return; end if;
|
|
var f: uint32 := 2;
|
|
while f<=nn loop
|
|
while nn%f == 0 loop
|
|
r := r + n/f as int32;
|
|
nn := nn/f;
|
|
end loop;
|
|
f := f+1;
|
|
end loop;
|
|
end sub;
|
|
|
|
var i: int32 := -99;
|
|
var c: uint8 := 0;
|
|
while i <= 100 loop
|
|
printcol(lagarias(i), 7);
|
|
i := i+1;
|
|
c := c+1;
|
|
if c%10 == 0 then print_nl(); end if;
|
|
end loop;
|