34 lines
1.1 KiB
Plaintext
34 lines
1.1 KiB
Plaintext
begin % compute values of the Mertens function %
|
|
integer array M ( 1 :: 1000 );
|
|
integer k, zero, cross;
|
|
% Generate Mertens numbers %
|
|
M( 1 ) := 1;
|
|
for n := 2 until 1000 do begin
|
|
M( n ) := 1;
|
|
for k := 2 until n do M( n ) := M( n ) - M( n div k )
|
|
end for_n ;
|
|
% Print table %
|
|
write( "The first 99 Mertens numbers are:" );
|
|
write( " " );
|
|
k := 9;
|
|
for n := 1 until 99 do begin
|
|
writeon( i_w := 3, s_w := 0, M( n ) );
|
|
k := k - 1;
|
|
if k = 0 then begin
|
|
k := 10;
|
|
write()
|
|
end if_k_eq_0
|
|
end for_n ;
|
|
% Calculate zeroes and crossings %
|
|
zero := 0;
|
|
cross := 0;
|
|
for n :=2 until 1000 do begin
|
|
if M( n ) = 0 then begin
|
|
zero := zero + 1;
|
|
if M( n - 1 ) not = 0 then cross := cross + 1
|
|
end if_M_n_eq_0
|
|
end for_n ;
|
|
write( i_w := 2, s_w := 0, "M(N) is zero ", zero, " times." );
|
|
write( i_w := 2, s_w := 0, "M(N) crosses zero ", cross, " times." )
|
|
end.
|