4 fortran
我正在尝试编写一个程序(在 Fortran 95 中),该程序将最多 N 的自然数最小分解为最多 4 个正整数的总和。
一段时间以来,我一直在尝试添加和删除语句,以使其仅停留在最小的分解上,但我一无所获。如何在找到最小分解后立即停止程序?
PROGRAM SummeQuadrat
IMPLICIT NONE
real:: start,finish
integer:: a,b,c,d,g,x,y
write(*,*) "Max n"
read (*,*) y
call cpu_time(start)
do x=1,y,1
do a=0,x,1
do b=a,x-a,1
do c=b,x-b,1
do d=c,x-c,1
if (a**2+b**2+c**2+d**2 .eq. x) then
write(*,*) "x=",x,d,c,b,a
end if
end do
end do
end do
end do
end do
call cpu_time(finish)
write(*,*)finish-start
end program SummeQuadrat
Run Code Online (Sandbox Code Playgroud)
正如我在评论中所解释的那样,我不确定您只是在问如何跳出循环或更多。
您可以使用该EXIT语句跳出任何循环。要退出当前所在的不是最内层循环的循环,请使用带标签的循环并使用EXIT语句中的标签退出该特定循环。
outer: do x = 1, y
do a = 0, x
do b = a, x-a
do c = b, x-b
do d = c, x-c
if (a**2+b**2+c**2+d**2 == x) then
write(*,*) "x=",x,d,c,b,a
if (minimal(a,b,c,d)) exit outer
end if
end do
end do
end do
end do
end do outer
Run Code Online (Sandbox Code Playgroud)