如何退出嵌套的 Fortran 循环?

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)

Vla*_*r F 5

正如我在评论中所解释的那样,我不确定您只是在问如何跳出循环或更多。

您可以使用该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)