recursive function gcd(a,b) result(c) integer*8::a,b,c if(b.eq.0) then c = a else c = gcd(b,MOD(a,b)) end if end function gcd function lcm(a,b) result(c) interface recursive function gcd(a,b) result(c) integer*8::a,b,c end function gcd end interface integer*8::a,b,c c = (a*b)/gcd(a,b) end function lcm program main implicit none interface function lcm(a,b) result(c) integer*8::a,b,c end function lcm end interface integer*8::N,D,tmp,i read *,N,D print '(i0)', lcm(N,D)/D-1 end program main