41 lines
952 B
Fortran
41 lines
952 B
Fortran
program Mertens
|
|
implicit none
|
|
integer M(1000), n, k, zero, cross
|
|
|
|
C Generate Mertens numbers
|
|
M(1) = 1
|
|
do 10 n=2, 1000
|
|
M(n) = 1
|
|
do 10 k=2, n
|
|
M(n) = M(n) - M(n/k)
|
|
10 continue
|
|
|
|
C Print table
|
|
write (*,"('The first 99 Mertens numbers are:')")
|
|
write (*,"(' ')",advance='no')
|
|
k = 9
|
|
do 20 n=1, 99
|
|
write (*,'(I3)',advance='no') M(n)
|
|
k = k-1
|
|
if (k .EQ. 0) then
|
|
k=10
|
|
write (*,*)
|
|
end if
|
|
20 continue
|
|
|
|
C Calculate zeroes and crossings
|
|
zero = 0
|
|
cross = 0
|
|
do 30 n=2, 1000
|
|
if (M(n) .EQ. 0) then
|
|
zero = zero + 1
|
|
if (M(n-1) .NE. 0) cross = cross+1
|
|
end if
|
|
30 continue
|
|
|
|
40 format("M(N) is zero ",I2," times.")
|
|
write (*,40) zero
|
|
50 format("M(N) crosses zero ",I2," times.")
|
|
write (*,50) cross
|
|
end program
|