使用leave语句无法理解输出

时间:2016-03-14 04:02:38

标签: sas

 data primes;
    length status $12.;
    do i=1 to 4;
    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;

以上是我跑的程序,下面是输出。当数字为素数时,我无法理解i的值。我已经提到我应该直到n-1但在输出中i = n的值为素数。有人可以帮我理解这个吗?

                Obs     status  i   j
                1   Prime       1   2   
                2   Prime       2   2
                3   Prime       3   3
                4   Composite   4   2

1 个答案:

答案 0 :(得分:1)

如果i = 1,那么第二个循环是j = 2到0,这意味着循环永远不会开始。 j循环永远不会执行。您可以添加显式输出或put语句来查看此内容。