请解释输出

时间:2016-03-14 09:25:04

标签: sas

      data primes;
       length status $12.;
          do i=3 to 6;
          status='Prime';
         do j=2 to i-1;
            if mod(i, j) = 0 then do;
        status='Composite';
          leave; *exit loop;
         end;
       end;
         Output;
         end;
         run;

         proc print data = primes;
                   run;

我编写了这段代码并获得了如下输出。有人可以解释一下如何在这里选择j的价值吗?当循环进入j = i-1

时,如何在输出中j = i
           Obs  status      i   j
            1   Prime       3   3   
            2   Composite   4   2
            3   Prime       5   5
            4   Composite   6   2

1 个答案:

答案 0 :(得分:3)

我与循环停止的方式有关。在索引变量递增后,检查在循环的顶部完成。如果它大于停止值,则循环停止。您可以使用直到(j eq i-1)停止循环并查看您期望的值。 DO循环使用GT停止的原因是因为增量可能永远不会具有停止的确切值。

还要注意这一切都在书中。 DO Statement, Iterative