按顺序生成一对数字

时间:2011-08-09 11:07:06

标签: fortran

我需要一些帮助,使用FORTRAN代码在订单中生成一对数字。

订单如下。

loop_1: 1,2 2,3 3,4 4,5 5,6 6,7 7,8 ..... until <= 2000

loop_2: 1,3 3,5, 5,7 7,9 9,11 11,13 ........until <= 2000

loop_3: 1,4, 4,7 7,10 10,13 13,17 ..... until <= 2000

loop_4: 1,5 5,9 9,13 13,17 17,21 .... until <= 2000

。 。 。 。 直到loop_100:

我尝试使用简单的代码,例如

program loopJump
implicit none
!

 integer :: i,j,k

 do k = 1, 6
 do i =  1, 5

    j=(i+k)

   print*, i,"   ",j

 enddo
 enddo

 stop
 end

但我无法得到我想要的。

提前致谢

2 个答案:

答案 0 :(得分:1)

这是一种方法。 编辑:格式正确。

program loopJump

  implicit none
  !

  integer :: i,j,k
  integer :: loopend
  character(len=*),parameter :: fmt1 = "('loop_',I1,' ',I4)"
  character(len=*),parameter :: fmt2 = "(', ',I4,', ',I4 )"

  do k = 1, 6
     write(*,fmt1,advance='NO') k,1
     loopend = (2000-1)/k
     do i =  1, loopend

        j=1+i*k
        write(*,fmt2,advance='NO') j,j
     enddo
     write(*,fmt="(2X)")
  enddo

  stop

end program

EDIT2:经过仔细研究后,似乎Kerrek SB通过上述评论提前回答了这个问题。使用该方法,循环将如下所示:

 do k = 1, 6
     write(*,fmt1,advance='NO') k,1
     do i =  k+1, 20, k
        write(*,fmt2,advance='NO') i,i
     enddo
     write(*,fmt="(2X)")
 enddo

答案 1 :(得分:0)

我不知道fortran,但这个伪代码可能会帮助你:

let i := 1
let n := 1

while i <= 100 do
  while n <= 2000 do
    print n
    n := n + i
    print ",", n, " "
  done
  print "\n"
  i := i + 1
done