fortran66のブログ

fortran について書きます。

problem 004

これは2,3秒かかる。ソートして大きい数から探せば早くなろう。

ソース・プログラム

    program PEuler4
      implicit none
      integer, parameter :: n = 999
      integer :: itab(n, n) = 0
      integer, allocatable :: q(:)
      integer :: i, j
      forall(i = 1:n, j = 1:n, i >= j) itab(i, j) = i * j 
      print *, maxval(itab, mask = palind(itab))
      stop 
    contains
      elemental logical function palind(k)
        integer, intent(in) :: k
        character(len = 6) :: tmp
        character(len = 1) :: ch(6)
        write(tmp, '(i6)') k 
        ch = transfer(tmp, ' ', size = 6)
        palind = all( ch(1:3) == ch(6:4:-1) )
        return
      end function palind
    end program PEuler4

実行結果

906609
続行するには何かキーを押してください . . .