42 lines
871 B
Plaintext
42 lines
871 B
Plaintext
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..<count {
|
|
if i % columns > 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).")
|