按顺序生成一对数字

发布于 2024-11-29 01:10:54 字数 607 浏览 0 评论 0原文

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

顺序如下。

循环_1: 1,2 2,3 3,4 4,5 5,6 6,7 7,8 .....直到<= 2000

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

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

loop_4: 1,5 5,9 9,13 13,17 17,21 .... 直到 <= 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

但我无法得到我想要的。

提前致谢

I need some help in generating pair of numbers in orders using FORTRAN code.

The order is like following.

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

.
.
.
.
until loop_100:

I have tried with simple code such as

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

But I can not get as I wanted.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

滥情哥ㄟ 2024-12-06 01:10:54

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

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

This is one way to do it. EDIT: with correct formatting.

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: After a careful look, it seems Kerrek SB answered this question earlier through a comment above. With that method, the loop would look like this:

 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
罗罗贝儿 2024-12-06 01:10:54

我不懂 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

I dont know fortran, but this pseudo code might help you out:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文