proc nonrec tau(word n) word: word count, total, p; total := 1; while n & 1 = 0 do total := total + 1; n := n >> 1 od; p := 3; while p*p <= n do count := 1; while n % p = 0 do count := count + 1; n := n / p od; total := total * count; p := p + 2 od; if n>1 then total << 1 else total fi corp proc nonrec main() void: byte n; for n from 1 upto 100 do write(tau(n):3); if n%20=0 then writeln() fi od corp