44 lines
1.2 KiB
ObjectPascal
44 lines
1.2 KiB
ObjectPascal
program tauFunction(output);
|
||
|
||
type
|
||
{ name starts with `integer…` to facilitate sorting in documentation }
|
||
integerPositive = 1..maxInt value 1;
|
||
{ the `value …` will initialize all variables to this value }
|
||
|
||
{ returns Boolean value of the expression divisor ∣ dividend ----------- }
|
||
function divides(
|
||
protected divisor: integerPositive;
|
||
protected dividend: integer
|
||
): Boolean;
|
||
begin
|
||
{ in Pascal, function result variable has the same name as function }
|
||
divides := dividend mod divisor = 0
|
||
end;
|
||
|
||
{ returns τ(i) --------------------------------------------------------- }
|
||
function tau(protected i: integerPositive): integerPositive;
|
||
var
|
||
count, potentialDivisor: integerPositive;
|
||
begin
|
||
{ count is initialized to 1 and every number is divisible by one }
|
||
for potentialDivisor := 2 to i do
|
||
begin
|
||
count := count + ord(divides(potentialDivisor, i))
|
||
end;
|
||
|
||
{ in Pascal, there must be exactly one assignment to result variable }
|
||
tau := count
|
||
end;
|
||
|
||
{ === MAIN ============================================================= }
|
||
var
|
||
i: integerPositive;
|
||
f: string(6);
|
||
begin
|
||
for i := 1 to 100 do
|
||
begin
|
||
writeStr(f, 'τ(', i:1);
|
||
writeLn(f:8, ') = ', tau(i):5)
|
||
end
|
||
end.
|