func mertensNumbers(max) { let mertens = Array.Empty(max + 1, 1) for n in 2..max { for k in 2..n { mertens[n] -= mertens[n / k] } } mertens } let max = 1000 let mertens = mertensNumbers(max) let count = 200 let columns = 20 print("First \(count - 1) Mertens numbers:") for i in 0.. 0 { print(" ", terminator: "") } print(i == 0 ? " " : mertens[i].ToString().PadLeft(2, ' ') + " ", terminator: "") if (i + 1) % columns == 0 { print() } } var (zero, cross, previous) = (0, 0, 0) for i in 1..max { let m = mertens[i] if m == 0 { zero += 1 if previous != 0 { cross += 1 } } previous = m } print("M(n) is zero \(zero) times for 1 <= n <= \(max).") print("M(n) crosses zero \(cross) times for 1 <= n <= \(max).")