RosettaCodeData/Task/Mertens-function/Draco/mertens-function.draco

39 lines
854 B
Plaintext

proc nonrec mertens([*] short m) void:
word n,k;
m[1] := 1;
for n from 2 upto dim(m,1)-1 do
m[n] := 1;
for k from 2 upto n do
m[n] := m[n] - m[n/k]
od
od
corp
proc nonrec main() void:
[1001] short m;
word x, y, eqz, crossz;
mertens(m);
writeln("The first 99 Mertens numbers are:");
for y from 0 by 10 upto 90 do
for x from 0 upto 9 do
if x+y=0
then write(" ")
else write(m[x+y]:3)
fi
od;
writeln()
od;
eqz := 0;
crossz := 0;
for x from 2 upto dim(m,1)-1 do
if m[x]=0 then
eqz := eqz + 1;
if m[x-1]~=0 then crossz := crossz + 1 fi
fi
od;
writeln("M(N) is zero ",eqz," times.");
writeln("M(N) crosses zero ",crossz," times.")
corp