63 lines
1.3 KiB
Fortran
63 lines
1.3 KiB
Fortran
!-*- mode: compilation; default-directory: "/tmp/" -*-
|
|
!Compilation started at Tue May 21 22:55:08
|
|
!
|
|
!a=./f && make $a && OMP_NUM_THREADS=2 $a 1223334444
|
|
!gfortran -std=f2008 -Wall -ffree-form -fall-intrinsics f.f08 -o f
|
|
! 1
|
|
! 2 3
|
|
! 4 5 6
|
|
! 7 8 9 10
|
|
! 11 12 13 14 15
|
|
!
|
|
!
|
|
! 1
|
|
! 2 3
|
|
! 4 5 6
|
|
! 7 8 9 10
|
|
! 11 12 13 14 15
|
|
! 16 17 18 19 20 21
|
|
! 22 23 24 25 26 27 28
|
|
! 29 30 31 32 33 34 35 36
|
|
! 37 38 39 40 41 42 43 44 45
|
|
! 46 47 48 49 50 51 52 53 54 55
|
|
! 56 57 58 59 60 61 62 63 64 65 66
|
|
! 67 68 69 70 71 72 73 74 75 76 77 78
|
|
! 79 80 81 82 83 84 85 86 87 88 89 90 91
|
|
! 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
|
!
|
|
!
|
|
!
|
|
!Compilation finished at Tue May 21 22:55:08
|
|
|
|
|
|
program p
|
|
integer, dimension(2) :: examples = [5, 14]
|
|
integer :: i
|
|
do i=1, size(examples)
|
|
call floyd(examples(i))
|
|
write(6, '(/)')
|
|
end do
|
|
|
|
contains
|
|
|
|
subroutine floyd(rows)
|
|
integer, intent(in) :: rows
|
|
integer :: n, i, j, k
|
|
integer, dimension(60) :: L
|
|
character(len=504) :: fmt
|
|
n = (rows*(rows+1))/2 ! Gauss's formula
|
|
do i=1,rows ! compute format of final row
|
|
L(i) = 2+int(log10(real(n-rows+i)))
|
|
end do
|
|
k = 0
|
|
do i=1,rows
|
|
do j=1,i
|
|
k = k+1
|
|
write(fmt,'(a2,i1,a1)')'(i',L(j),')'
|
|
write(6,fmt,advance='no') k
|
|
enddo
|
|
write(6,*) ''
|
|
end do
|
|
end subroutine floyd
|
|
|
|
end program p
|