summaryrefslogtreecommitdiff
path: root/gcd.f03
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2022-09-20 20:36:13 +0200
committerIgor Pashev <pashev.igor@gmail.com>2022-09-20 20:37:16 +0200
commitb70d57b1bb12cfb5b5923537cc1615fd268aecd9 (patch)
tree77bbf62aaa8a099a0f1866d47705ef192f443b80 /gcd.f03
parent7e77b68f6879917a27a0fa3426b9ceef242a9879 (diff)
downloadgcd-b70d57b1bb12cfb5b5923537cc1615fd268aecd9.tar.gz
Update Fortran
Diffstat (limited to 'gcd.f03')
-rw-r--r--gcd.f0356
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