I found some rather non-Fortranic Fortran code on a blog, and after correcting it, thought it'd be a good example highlighting some of the perks of Fortran. I'm somewhat of a Fortran evangelist, so I like showing this stuff off. Here's the original code, cleaned up somewhat:

And here would be a more preferred/optimal form:Code:program primes implicit none integer, parameter :: max = 10000000 integer :: i, j, k, product(max), imax, jmax, numprime do k = 1, 100 do i = 1, max product(i) = 0 end do numprime = 0 imax = floor(sqrt(real(max))) do i = 2, imax if (product(i) == 0) then jmax = max/i do j = 2, jmax product(i*j) = 1 end do end if end do do i = 2, max if (product(i) == 0) then numprime = numprime + 1 end if end do print *, 'Number of primes = ', numprime end do end program primes

Changes:Code:program primes implicit none integer, parameter :: pmax = 10000000 integer :: i, k, imax logical :: prod(pmax) do k = 1, 100 prod(:) = .TRUE. imax = floor(sqrt(real(pmax))) do i = 2, imax if (prod(i)) then prod(2*i:pmax:i) = .FALSE. end if end do print *, 'Number of primes = ', count(prod)-1 end do end program primes

- product and max are built-in function names, changed names

- can do a scalar assignment to an entire array

- can do a masked assignment to an array

- used the built-in function count appropriately