这里\xe2\x80\x99是使用该特定算法的已完成程序之一。
\n\n program Lotto\n\n implicit none\n\n INTEGER::MAXTHREADS\n INTEGER::I,N,Q,RAN,RAN4(4),N129(9),LOTTO5(5)\n REAL::R,TI,TIMELY,SEC\n\n CALL RANDOM_SEED()\n!____________________________________________________________________________\n!____________________________________________________________________________\n\n N=0\n RAN4=0\n DO\n CALL RANDOM_NUMBER(R)\n RAN=1+INT(9*R)\n IF(COUNT(RAN==RAN4(1:4))/=0)CYCLE\n N=N+1\n RAN4(N)=RAN\n IF(N==4)EXIT\n ENDDO\n\n N129=[1,2,3,4,5,6,7,8,9]\n N129(RAN4(1:4))=0\n\n N=0\n DO I=1,9\n IF(N129(I)==0)CYCLE\n N=N+1\n LOTTO5(N)=I\n ENDDO \n PRINT*,LOTTO5\n\n end program Lotto\nRun Code Online (Sandbox Code Playgroud)\n\n针对我原来的帖子,High Performance Mark 提出了两个重要的观察结果:
\n\n如果不了解代码片段的使用上下文,就无法对它进行任何描述。和
无论如何,可能不值得花时间去打扰那些小事。(对措辞表示歉意。)
上面的简短程序 \xe2\x80\x9cLotto\xe2\x80\x9d 仅作为一个小演示,用于在 \xe2\x80\x93 上下文中显示 \xe2\x80\x93 如何使用过滤算法。当然,作为仅几行代码的集合,它可能无法改进。然而,我本来希望并非如此。当每天处理 1500 到 2000 行新的 Fortran 代码,并且类似的代码片段在同一程序中出现 10 或 12 次时,如果您可以改进(优化)其中一个,则可以优化它们,至少可以减少一些执行时间,这间接说明了 HPM\xe2\x80\x99 的第二个观察结果。作为一名 Fortran 程序员,我只有一个目标,那就是用尽可能短的执行时间产生期望的结果。这是\xe2\x80\x99 的好说法。更现实的说法是: \xe2\x80\x9c 花费最少的钱,产生想要的结果。 \xe2\x80\x9d 由于 \xe2\x80\x9coptimization\xe2\x80\x9d 是众多标签之一, Stack Overflow 使用时,我希望能够进行一些涉及优化的讨论,但显然情况并非如此。我猜还有其他论坛。一些年轻的用户可能对代码优化的工作原理感兴趣,但他们中的许多人似乎非常专注于无法正确执行某些代码集合。
\n\n …