! 实现更相减损术,求a,b最大公因数
recursive real function Derogation(a, b) result(result)
real :: a, b, c, temp
c = abs(a - b)
if (c==b) then
result = c
else if (b>=c) then
result = Derogation(b, c)
else
result = Derogation(c, b)
end if
end function Derogation
program main
real a, b
read(*, *) a, b
print*, Approx(a, b)
contains
! 约分分数
function Approx(m, n)
real :: m, n, p
real, dimension(2) :: Approx
do while (.true.)
p = Derogation(m, n)
if (p==1) exit
m = m / p
n = n / p
end do
Approx = [m, n]
end function Approx
end program main
Fortran 约分最简分数
最新推荐文章于 2024-07-12 14:44:00 发布