program mertens; m := [1] * 1000; loop for n in [1..#m] do m(n) -:= 0 +/[m(n div k) : k in [2..n]]; end loop; print("The first 99 Mertens numbers:"); putchar(" "); loop for n in [1..99] do putchar(lpad(str m(n), 3)); if n mod 10=9 then print; end if; end loop; zero := #[n : n in [1..#m] | m(n) = 0]; cross := #[n : n in [1..#m] | m(n) = 0 and m(n-1) /= 0]; print("M(N) is zero " + str zero + " times."); print("M(N) crosses zero " + str cross + " times."); end program;