Mertens function: Difference between revisions

m
 
(4 intermediate revisions by 4 users not shown)
Line 1,748:
M(n) is zero 92 times for 1 <= n <= 1000.
M(n) crosses zero 59 times for 1 <= n <= 1000.</pre>
 
=={{header|EasyLang}}==
{{trans|FutureBasic}}
<syntaxhighlight>
len mertens[] 1000
mertens[1] = 1
for n = 2 to 1000
mertens[n] = 1
for k = 2 to n
mertens[n] -= mertens[n div k]
.
.
print "First 99 Mertens numbers:"
write " "
numfmt 0 2
for n = 1 to 99
write mertens[n] & " "
if n mod 10 = 9
print ""
.
.
for n = 1 to 1000
if mertens[n] = 0
zeros += 1
if mertens[n - 1] <> 0
crosses += 1
.
.
.
print ""
print "In the first 1000 terms of the Mertens sequence there are:"
print zeros & " zeros"
print crosses & " zero crosses"
</syntaxhighlight>
{{out}}
<pre>
First 99 Mertens numbers:
1 0 -1 -1 -2 -1 -2 -2 -2
-1 -2 -2 -3 -2 -1 -1 -2 -2 -3
-3 -2 -1 -2 -2 -2 -1 -1 -1 -2
-3 -4 -4 -3 -2 -1 -1 -2 -1 0
0 -1 -2 -3 -3 -3 -2 -3 -3 -3
-3 -2 -2 -3 -3 -2 -2 -1 0 -1
-1 -2 -1 -1 -1 0 -1 -2 -2 -1
-2 -3 -3 -4 -3 -3 -3 -2 -3 -4
-4 -4 -3 -4 -4 -3 -2 -1 -1 -2
-2 -1 -1 0 1 2 2 1 1 1
 
In the first 1000 terms of the Mertens sequence there are:
92 zeros
59 zero crosses
</pre>
 
=={{header|F_Sharp|F#}}==
Line 2,025 ⟶ 2,077:
-4 -3 -4 -4 -3 -2 -1 -1 -2 -2
-1 -1 0 1 2 2 1 1 1 1
</pre>
 
=={{header|FutureBasic}}==
<syntaxhighlight lang="futurebasic">
void local fn MertensFunction
long mertens(1000), n, k, crossesTotal = 0, zerosTotal = 0
mertens(1) = 1
for n = 2 to 1000
mertens(n) = 1
for k = 2 to n
mertens(n) = mertens(n) - mertens(n/k)
next
next
printf @"First 99 Mertens numbers:\n \b"
for n = 1 to 99
printf @"%3ld \b", mertens(n)
if ( n mod 10 == 9 ) then print
next
for n = 1 to 1000
if ( mertens(n) == 0 )
zerosTotal++
if mertens(n-1) != 0 then crossesTotal++
end if
next
print
printf @"mertens(n) array is zero %ld times.", zerosTotal
printf @"mertens(n) array crosses zero %ld times.", crossesTotal
end fn
 
fn MertensFunction
 
HandleEvents
</syntaxhighlight>
{{output}}
<pre>
First 99 Mertens numbers:
1 0 -1 -1 -2 -1 -2 -2 -2
-1 -2 -2 -3 -2 -1 -1 -2 -2 -3
-3 -2 -1 -2 -2 -2 -1 -1 -1 -2
-3 -4 -4 -3 -2 -1 -1 -2 -1 0
0 -1 -2 -3 -3 -3 -2 -3 -3 -3
-3 -2 -2 -3 -3 -2 -2 -1 0 -1
-1 -2 -1 -1 -1 0 -1 -2 -2 -1
-2 -3 -3 -4 -3 -3 -3 -2 -3 -4
-4 -4 -3 -4 -4 -3 -2 -1 -1 -2
-2 -1 -1 0 1 2 2 1 1 1
 
mertens(n) array is zero 92 times.
mertens(n) array crosses zero 59 times.
</pre>
 
Line 3,593 ⟶ 3,700:
it crosses zero 59 times.
</pre>
 
=={{header|SETL}}==
<syntaxhighlight lang="setl">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;</syntaxhighlight>
{{out}}
<pre>The first 99 Mertens numbers:
1 0 -1 -1 -2 -1 -2 -2 -2
-1 -2 -2 -3 -2 -1 -1 -2 -2 -3
-3 -2 -1 -2 -2 -2 -1 -1 -1 -2
-3 -4 -4 -3 -2 -1 -1 -2 -1 0
0 -1 -2 -3 -3 -3 -2 -3 -3 -3
-3 -2 -2 -3 -3 -2 -2 -1 0 -1
-1 -2 -1 -1 -1 0 -1 -2 -2 -1
-2 -3 -3 -4 -3 -3 -3 -2 -3 -4
-4 -4 -3 -4 -4 -3 -2 -1 -1 -2
-2 -1 -1 0 1 2 2 1 1 1
M(N) is zero 92 times.
M(N) crosses zero 59 times.</pre>
 
=={{header|Sidef}}==
Line 3,820 ⟶ 3,962:
{{libheader|Wren-fmt}}
{{libheader|Wren-math}}
<syntaxhighlight lang="ecmascriptwren">import "./fmt" for Fmt
import "./math" for Int
 
var isSquareFree = Fn.new { |n|
2,033

edits