program test implicit none c integer, parameter :: ntable = 1000 integer n double precision, dimension(ntable) :: result double precision, external :: lfak c do n=1,ntable result(n) = lfak(n) enddo c write(*,'(1x,3a15)') 'n','log10(n!)','n!' do n=1,ntable,5 write(*,'(1x,i15,1p,2d15.5)') n,result(n),10.d0**result(n) enddo c stop end c c c double precision function lfak(n) implicit none integer, intent(in) :: n c integer i c if(n .le. 1) then lfak = 0.d0 return else lfak = 0.d0 do i=2,n lfak = lfak + log10(dble(i)) enddo endif return end