diff options
Diffstat (limited to 'gcd.f03')
-rw-r--r-- | gcd.f03 | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/gcd.f03 b/gcd.f03 deleted file mode 100644 index c2c585d..0000000 --- a/gcd.f03 +++ /dev/null @@ -1,56 +0,0 @@ -! SYNOPSIS: -! -! # gfortran -o gcd-f gcd.f03 -! # ./gcd-f 11 22 33 121 -! - -program GCD - implicit none - - integer, allocatable :: ns(:) - integer :: i, n - character*20 :: tmpstr - - n = command_argument_count() - - allocate (ns(n)) ! allocate memory for numbers given in command line - - do i = 1, n - call get_command_argument(i, tmpstr) - ns(i) = str2int(tmpstr) - end do - - print *, gcdn(ns) - - deallocate (ns) - -! If we declare functions first, -! we have to specify its types within -! the `program' section. -! See http://en.wikibooks.org/wiki/Fortran/Fortran_procedures_and_functions -contains - - pure integer function str2int(s) - character*(*), intent(in) :: s - read (s, *) str2int - end function - - pure recursive integer function gcd2(a, b) result(GCD) - integer, intent(in) :: a, b - if (b == 0) then - GCD = a - else - GCD = gcd2(b, mod(a, b)) - end if - end function gcd2 - - pure integer function gcdn(n) - integer, intent(in) :: n(:) ! n is an array - integer :: i - gcdn = n(1) - do i = 2, size(n) - gcdn = gcd2(gcdn, n(i)) - end do - end function - -end program |