fortran66のブログ

fortran について書きます。

Getting started in CM Fortran のサンプルプログラム

http://www.sthmuseum.org/downloads/CM5/GettingStartedinCMFortran.pdf
42ページ Primes:Second CM Fortran Version

これは Fortran95 の文法にかなっているので無修正で動きます。今のコンピュータだとシリアル実行でも一瞬w

実行結果


長いので見切れ画像。

ソース・プログラム

program CMFortran
  implicit none
  integer, parameter :: n = 500
  integer :: i, nn
  integer :: temp1(n, n), temp2(n, n)
  logical :: candid(n, n), primes(n)
  
  candid = .false.
  forall (i = 1:n) temp1(i, :) = 2 * i + 1
  forall (i = 1:n) temp2(:, i) = 2 * i + 1
  
  where ( ( (mod(temp1, temp2) /= 0) .and. (temp1 >  temp2) ) &
                                    .or. (temp1 <= temp2)   ) 
    candid = .true.
  end where
                                  
  primes = all(candid, dim = 2)
  
  print *, 'number of primes:', count(primes) + 1
  print *, 2
  do i = 1, n
    if (primes(i)) print *, 2 * i + 1
  end do
  stop
end program CMFortran