Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
57
Task/Mertens-function/Julia/mertens-function.julia
Normal file
57
Task/Mertens-function/Julia/mertens-function.julia
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
using Primes, Formatting
|
||||
|
||||
function moebius(n::Integer)
|
||||
@assert n > 0
|
||||
m(p, e) = p == 0 ? 0 : e == 1 ? -1 : 0
|
||||
return reduce(*, m(p, e) for (p, e) in factor(n) if p ≥ 0; init=1)
|
||||
end
|
||||
μ(n) = moebius(n)
|
||||
|
||||
mertens(x) = sum(n -> μ(n), 1:x)
|
||||
M(x) = mertens(x)
|
||||
|
||||
print("First 99 terms of the Mertens function for positive integers:\n ")
|
||||
for n in 1:99
|
||||
print(lpad(M(n), 3), n % 10 == 9 ? "\n" : "")
|
||||
end
|
||||
|
||||
function maximinM(N)
|
||||
z, cros, lastM, maxi, maxM, mini, minM, sumM, pos, neg = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
for i in 1:N
|
||||
m = μ(i) + lastM
|
||||
if m == 0 && lastM != 0
|
||||
cros += 1
|
||||
end
|
||||
sumM += m
|
||||
lastM = m
|
||||
if m > maxM
|
||||
maxi = i
|
||||
maxM = m
|
||||
elseif m < minM
|
||||
mini = i
|
||||
minM = m
|
||||
end
|
||||
if m > 0
|
||||
pos += 1
|
||||
elseif m < 0
|
||||
neg += 1
|
||||
else
|
||||
z += 1
|
||||
end
|
||||
end
|
||||
println("\nFor M(x) with x from 1 to $(format(N, commas=true)):")
|
||||
println("The maximum of M(x) is M($(format(maxi, commas=true)) = $maxM.")
|
||||
println("The minimum of M(x) is M($(format(mini, commas=true))) = $minM.")
|
||||
println("The sum of M(x) is $(format(sumM, commas=true)).")
|
||||
println("The count of positive M(x) is $(format(pos, commas=true)), count of negative M(x) is $(format(neg, commas=true)).")
|
||||
println("M(x) has $(format(z, commas=true)) zeroes in the interval.")
|
||||
println("M(x) has $(format(cros, commas=true)) crossings in the interval.")
|
||||
diff = pos - neg
|
||||
if diff > 0
|
||||
println("Positive M(x) exceed negative ones by $(format(diff, commas=true)).")
|
||||
else
|
||||
println("Negative M(x) exceed positive ones by $(format(-diff, commas=true)).")
|
||||
end
|
||||
end
|
||||
|
||||
foreach(maximinM, (1000, 1_000_000, 1_000_000_000))
|
||||
Loading…
Add table
Add a link
Reference in a new issue