(phixonline)--> with javascript_semantics requires("1.0.2") -- (skip arg added to join_by) sequence mcache = {1} function Mertens(integer n) for m=length(mcache)+1 to n do integer mm = 1 for k=2 to m do mm -= mcache[floor(m/k)] end for mcache &= mm end for return mcache[n] end function constant first = 99, perline = 10 --constant first = 199, perline = 20 -- matches C/Go/etc --constant first = 143, perline = 12 -- matches wp sequence s = {" ."}&apply(tagset(first),Mertens) printf(1,"First %d Mertens numbers:\n",first) puts(1,join_by(s,1,perline," ",fmt:="%3d",skip:=1)) integer prev = 1, zeroes = 0, crosses = 0 for n=2 to 1000 do integer m = Mertens(n) if m=0 then zeroes += 1 crosses += prev!=0 end if prev = m end for printf(1,"\nMertens[1..1000] equals zero %d times and crosses zero %d times\n",{zeroes,crosses})